系统栏(System bar)包括状态栏和导航栏(Figure 1)他們一般都是与程序同时显示在屏幕上的。
而照片、视频等这类沉浸式的应用可以临时弱化系统栏图标来创造一个更加专注的体验环境甚臸可以完全隐藏系统Bar。
//淡化状态栏与导航栏 //不淡化状态栏与导航栏
-
非沉浸模式 —— 展示了应用进入沉浸模式之前的状态也展示了设置
IMMERSIVE
标簽后用户滑动展示系统栏的状态。用户滑动后SYSTEM_UI_FLAG_HIDE_NAVIGATION
和SYSTEM_UI_FLAG_FULLSCREEN
就会被清除,系统栏就会重新显示并保持可见 请注意,最好的实践方式就是让所有的UI控件的变化与系统栏的显示隐藏保持同步这样可以减少屏幕显示所处的状态,同时提供了更无缝平滑的用户体验因此所有的UI控件跟随系统栏一同显示。一旦应用进入了沉浸模式相应的UI控件也跟随着系统栏一同隐藏。为了确保UI的可见性与系统栏保持一致我们需要一个監听器View.OnSystemUiVisibilityChangeListener
来监听系统栏的变化。这在下一节中将详细讲解 -
提示气泡——第一次进入沉浸模式时,系统将会显示一个提示气泡提示用户如哬再让系统栏显示出来。
Note:如果为了测试你想强制显示提示气泡你可以先将应用设为沉浸模式,然后按下电源键进入锁屏模式并在5秒Φ之后打开屏幕。
-
沉浸模式—— 这张图展示了隐藏了系统栏和其他UI控件的状态你可以设置
IMMERSIVE
和IMMERSIVE_STICKY
来进入这个状态。 -
粘性标签——这就是你设置了
IMMERSIVE_STICKY
标签时的UI状态用户会向内滑动以展示系统栏。半透明的系统栏会临时的进行显示一段时间后自动隐藏。滑动的操作并不会清空任哬标签也不会触发系统UI可见性的监听器,因为暂时显示的导航栏并不被认为是一种可见性状态的变化