建议的设置
设置全屏的方式-系统状态栏(status bar)和Action Bar(操作栏)隐藏
- setSystemUiVisibility(int),适合临时性的全屏,例如书籍阅读
- 窗口标志-WindowManager.LayoutParams.FLAG_FULLSCREEN,适合持续性的全屏状态,如全屏游戏。
setSystemUiVisibility(int)
private final Runnable mHidePart2Runnable = new Runnable() {
@SuppressLint("InlinedApi")
@Override
public void run() {
// Delayed removal of status and navigation bar
// Note that some of these constants are new as of API 16 (Jelly Bean)
// and API 19 (KitKat). It is safe to use them, as they are inlined
// at compile-time and do nothing on earlier devices.
mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
}
};
View.SYSTEM_UI_FLAG_LOW_PROFILE(Api14)
View已请求系统UI进入不显眼的“低调”模式。
这适用于游戏,图书阅读器,视频播放器或任何其他“沉浸式”应用程序,其中通常的系统镶边被视为过分分散注意力。
在低调模式下,状态栏和/或导航图标可能会变暗。
View.SYSTEM_UI_FLAG_FULLSCREEN(Api16)
View已请求进入正常的全屏模式,以便其内容可以接管屏幕(临时性的),同时仍允许用户与应用程序进行交互。
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY(Api19)
当使用SYSTEM_UI_FLAG_FULLSCREEN隐藏状态栏和/或使用SYSTEM_UI_FLAG_HIDE_NAVIGATION隐藏导航栏时,View将保持交互。使用此标志创建身临其境的体验,同时隐藏系统栏。如果未设置此标志,系统将在任何用户交互时强制清除SYSTEM_UI_FLAG_HIDE_NAVIGATION,如果用户从屏幕顶部滑动,SYSTEM_UI_FLAG_FULLSCREEN将被系统强制清除。
当系统栏以沉浸模式隐藏时,可以通过系统手势临时显示它们,例如从屏幕顶部滑动。这些瞬态系统栏将覆盖应用程序的内容,可能具有一定程度的透明度,并会在短暂超时后自动隐藏。
由于此标志是SYSTEM_UI_FLAG_FULLSCREEN和SYSTEM_UI_FLAG_HIDE_NAVIGATION的修饰符,因此只有在与这些标志中的一个或两个组合使用时才会起作用。
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION(Api16)
视图希望它的窗口被布置好,就好像它已经请求了SYSTEM_UI_FLAG_HIDE_NAVIGATION一样,即使它现在还没有。 这允许它在切入和切出该模式时避免失真,其代价是它们的一些用户界面在显示时可能被屏幕装饰覆盖。 您可以通过fitSystemWindows(Rect)方法执行内部UI元素的布局来解释导航系统UI。
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION(Api14)
View已经请求暂时隐藏系统导航。
这比SYSTEM_UI_FLAG_LOW_PROFILE调用的状态更不显眼; 在屏幕上绘制基本导航控件(主屏幕,后屏幕等)的设备上,SYSTEM_UI_FLAG_HIDE_NAVIGATION将使其消失。 这非常有用(与FLAG_FULLSCREEN和FLAG_LAYOUT_IN_SCREEN窗口标记一起使用),用于使用显示器上的每个最后一个像素显示内容。
有一个限制:因为导航控件非常重要,最少的用户交互将导致它们立即重新出现。 发生这种情况时,该标志和SYSTEM_UI_FLAG_FULLSCREEN都会自动清除,以便两个元素同时重新出现。
显示系统状态栏-
// Show the system bar
mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
隐藏系统状态栏
// Delayed removal of status and navigation bar
// Note that some of these constants are new as of API 16 (Jelly Bean)
// and API 19 (KitKat). It is safe to use them, as they are inlined
// at compile-time and do nothing on earlier devices.
mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
}