安卓隐藏状态栏

我们在开发游戏的时候一般都是全屏显示,但是在操作下拉显示状态栏,切后台之后再切回来发现状态栏还存在,并没有消失。

在 Android 4.1(API 级别 16)及更高版本中隐藏状态栏可以使用setSystemUiVisibility()

setSystemUiVisibility() 在单个视图级别设置界面标记;这些设置会聚合到窗口级别。与使用 WindowManager 标记相比,使用 setSystemUiVisibility() 设置界面标记让您可以更精细地控制系统栏。

int flag = 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
                | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
getWindow().getDecorView().setSystemUiVisibility(flag);

setSystemUiVisibility的相关属性

View.SYSTEM_UI_FLAG_HIDE_NAVIGATION //隐藏导航栏
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
View.SYSTEM_UI_LAYOUT_FLAGS
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN //全屏,状态栏会盖在布局上
View.SYSTEM_UI_FLAG_FULLSCREEN //全屏,状态栏和导航栏不显示
View.SYSTEM_UI_FLAG_VISIBLE //显示状态栏和导航栏
View.SYSTEM_UI_FLAG_LAYOUT_STABLE // 保持View Layout不变,隐藏状态栏或者导航栏后,View不会拉伸
View.SYSTEM_UI_FLAG_LOW_PROFILE //状态栏:低能显示状态,状态栏上一些图标显示会被隐藏
View.SYSTEM_UI_FLAG_IMMERSIVE //只有当设置了SYSTEM_UI_FLAG_HIDE_NAVIGATION才起作用。如果没有设置,任意的View相互动作都退出SYSTEM_UI_FLAG_HIDE_NAVIGATION模式。如果设置就不会退出
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY //只有当设置了SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION 时起作用。如果没有设置,任意的View相互动作都退出SYSTEM_UI_FLAG_FULLSCREEN | SYSTEM_UI_FLAG_HIDE_NAVIGATION模式

请注意以下几点:

  • 界面标志被清除后(例如,离开 Activity),如果您希望再次隐藏这些栏,应用需要重置这些标志。请参阅响应界面可见性更改,其中探讨了如何监听界面可见性更改,以便您的应用相应地做出响应。
  • 在不同的位置设置界面标记会产生不同的效果。如果您在 Activity 的 onCreate() 方法中隐藏系统栏,那么当用户按主屏幕按钮时,系统栏会重新出现。当用户重新打开 Activity 后,系统不会调用 onCreate(),因此系统栏仍保持可见。如果您希望在用户进入和退出 Activity 时继续保留系统界面更改,请在 onResume() 或 onWindowFocusChanged() 中设置界面标记。
  • 要使方法 setSystemUiVisibility() 生效,您调用它时所在的视图必须可见。
  • 离开该视图会导致系统清除使用 setSystemUiVisibility() 设置的标志。

 

原文地址:https://www.cnblogs.com/ring1992/p/15701551.html