对于Android来说什么是沉浸式状态栏?给个图你对比看就懂了:
Android的沉浸式状态栏是什么?给个图,对比一下就明白了:
非沉浸式
非浸入
沉浸
对比上面两张照片,沉浸式和非沉浸式状态栏的区别就出来了。当然,还有其他种类的沉浸式状态栏。比如你在玩游戏的时候,不把状态栏拉下来,状态栏就不会出来。这也是常用的沉浸式状态栏。
好了,在理解了沉浸式状态栏和非沉浸式状态栏的区别之后,我们现在要真正实现它了。
首先我们要先判断我们的安卓版本。如果它大于5.0,我们将调整我们的沉浸式状态栏。然后,我们需要得到我们的俯视图来操作。Android的顶视图是window,所以我们首先得到window,然后将systemUiVisibility设置为全屏,并需要statusBar。当然,别忘了把状态栏设置成透明的。代码如下:
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_***in) //判断Android的版本是否大于5.0 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ //获取最上层的View进行操作 window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN .or(View.SYSTEM_UI_FLAG_LAYOUT_STABLE) window.statusBarColor = Color.TRANSPARENT//透明 } }}
还有,我们需要在AndroidManifest文件下设置我们活动的主题为NoActionBar,代码如下:
<activity android:name=".MainActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
最后贴上我的XML布局文件的代码,方便小白阅读和实现:
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://sche***s.android.com/apk/res/android" xmlns:app="http://sche***s.android.com/apk/res-auto" xmlns:tools="http://sche***s.android.com/tools" android:layout_width="***tch_parent" android:layout_height="***tch_parent" tools:context=".MainActivity"> <LinearLayout android:background="@color/colorAccent" android:layout_height="***tch_parent" android:layout_width="***tch_parent"/>></androidx.constraintlayout.widget.ConstraintLayout>
这种沉浸式状态栏的实现,是我们首先实现的方式。那么想要实现游戏的全屏沉浸式状态栏应该怎么做呢?别担心,我准备好了。我们不改变其他代码。请参考我们systemUiVisibility的设置中的以下代码,添加即可轻松实现。这时候我们的导航栏和状态栏是隐藏的,只有下拉的时候,过一会儿会自动缩回。
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN .or(View.SYSTEM_UI_FLAG_LAYOUT_STABLE) .or(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_N***IGATION) .or(View.SYSTEM_UI_FLAG_HIDE_N***IGATION) .or(View.SYSTEM_UI_FLAG_FULLSCREEN) .or(View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)
我们的沉浸式状态栏很容易实现。如有不妥之处,请指出,共同探讨!
本文来自习惯有你投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/613067.html