强调内容Android 4.4系统(API等级19)引入了一个新 SYSTEM_UI_FLAG_IMMERSIVE为标志 setSystemUiVisibility() ,可以让您的应用程序去真正的“全屏幕”。这个标志,当与结合 SYSTEM_UI_FLAG_HIDE_NAVIGATION和 SYSTEM_UI_FLAG_FULLSCREEN标志,隐藏导航栏和状态栏,让您的应用程序捕获屏幕上的所有触摸事件。
- 使用非粘性浸入
// This snippet hides the system bars.
private void hideSystemUI() {
// Set the IMMERSIVE flag.
// Set the content to appear under the system bars so that the content
// doesn't resize when the system bars hide and show.
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE);
}
// This snippet shows the system bars. It does this by removing all the flags
// except for the ones that make the content appear under the system bars.
private void showSystemUI() {
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
- 使用粘性浸入
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);}
粘性浸入:使用粘性浸入系统栏自动片刻后能再次隐藏,注意:标记的"粘性"浸入不触发任何听众,如在此模式下暂时显示system bar处于过渡状态。一般像阅读器等场景等建议使用粘性浸入。
非粘性浸入: 当启用浸入全屏模式,你的activity将继续接收所有触摸事件。用户可以沿所在的system bar正常显示区域向内轻扫显示system bar。这将清除SYSTEM_UI_FLAG_HIDE_NAVIGATION标志和SYSTEM_UI_FLAG_FULLSCREEN标志,如果申请过。使system bar变得可见。这也触发您的 View.OnSystemUiVisibilityChangeListener,如果有设置。