Android 全屏沉浸式(隐藏状态栏和导航栏)的一些设置

2020-05-19  本文已影响0人  小强开学前

效果:进入后状态栏、导航栏隐藏,手势滑动显示,2s后又自动隐藏

        <!--启用全屏-->
        <item name="android:windowFullscreen">true</item>
// 方法1,在onCreate中设置以下代码
hideSystemUiVisibility()
window.decorView.setOnSystemUiVisibilityChangeListener {
      hideSystemUiVisibility()
}

// 方法2,重写 onWindowFocusChanged
override fun onWindowFocusChanged(hasFocus: Boolean) {
      super.onWindowFocusChanged(hasFocus)
      if (hasFocus) hideSystemUiVisibility()
}
// 设置沉浸模式
private fun hideSystemUiVisibility() {
        window.decorView.systemUiVisibility =
            View.SYSTEM_UI_FLAG_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
}

不隐藏状态栏的完美解决方法(5.0以后):

 <item name="android:statusBarColor">@android:color/transparent</item>

配合

window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE

让在有抽屉的界面上面还是会有一层半透明遮罩
这时候需要在NavigationView中设置app:insetForeground="#00000000"

当然,一般设备和一般界面设置windowTranslucentStatus为true这一个属性就搞定了。
但是这种在锤子坚果R1上仍然有半透明遮罩,即使强行再设置statusBarColor 为自己想要的颜色,有抽屉界面即使按照上面方法设置了还是会有一层半透明遮罩,这个应该是系统默认的实现方式。

所以,还是别怕麻烦了。

上一篇下一篇

猜你喜欢

热点阅读