早起4.1系统及一下采用主题或者WindowManager.layoutParams 进行控制
1.可以设置WindowManager.LayoutParams 、或者 view.xxx. view.支持的flag更多flag
-
防止内容因为statebar 的隐藏而reset
3.4.1 或者 大于4.1 系统采用 setSystemUiVisibility(),设置View标志比使用WindowManager标志使您对系统栏的控制更为精细。
- onResume() or onWindowFocusChanged(). 中进行状态栏额调节,因为 setSystemUiVisibility()只有在看的见的时刻有效果
5.如果想让内容在状态栏之后,只需要调整SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN.。同样可以添加system_ui_flag_layout_stable 帮助你
或得更加稳定的布局
6.当然需要添加fitsSystemWindows 在根布局,告诉系统预留部分区域给状态icon。防止点击到系统状态栏图标。造成点击事件无效。
同样可以复写fitSystemWindows(Rect insets) 对状态栏的高度进行定制
隐藏导航栏
1.一般来说导航栏和状态栏需要同时隐藏,设计app时候需要考虑到。系统提供e SYSTEM_UI_FLAG_HIDE_NAVIGATION ,来同时控制状态栏和导航栏。
systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN
采用如上这种方式,在用户触摸屏幕会清除这两个flag,那么如果需要再次隐藏,就需要重新设置了。设置方式在onresume 或者 onwindowFocusChanged()。
离开视图导航会导致setSystemUiVisibility()设置的标志被清除0
2.如果想让视图出现在导航栏的下面,设置System_ui_flag_layout_hide_navigation .为了更加精确的控制,加上System_ui_flag_layout_state 去帮助你获得更稳定的布局。
低辨识度模式
- 让用户达到沉浸式模式在视频或者游戏进行中。通过设置decorview.View.System_ui_flag_low_profile 模式。在用户触发屏幕会被清除,如果需要重新设置需要进行监听。
- 当然地辨识度模式清除,则需要调用decorview。setsystemuivisibility(0) 即可。
安卓几种模式全面屏
- 沉浸式 SYSTEM_UI_FLAG_IMMERSIVE
- 粘性沉浸式 SYSTEM_UI_FLAG_IMMERSIVE_STICKY
- lean back 模式