目录标题
一、前言
在之前写过的文章中,有写过状态栏设置相关的博客。
在本次项目中,又遇到了getWindow().getDecorView().setSystemUiVisibility设置状态栏属性的情况。
代码为在一个BaseActivity的onResume方法中调用一个自定义的fullscreen()方法,而这个fullscreen()方法具体实现就是设置状态栏的属性。
BaseActivity中onResume方法:
@Override
protected void onResume() {
super.onResume();
fullscreen();
sendBroadcastToLauncherOnResume();
}
其中用于设置状态栏属性的方法fullscreen():
private void fullscreen() {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
这边主要实现的是getWindow().getDecorView().setSystemUiVisibility()
方法,这是View.java中的一个方法,然后在其中添加对应的实参,实现对状态栏各种设置,接下来我们主要看的就是这些实参。
上面的五个参数分别对应:
1.使用了SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN和SYSTEM_UI_FLAG_LAYOUT_STABLE,注意两个Flag必须要结合在一起使用,表示会让应用的主体内容占用系统状态栏的空间
2.下文setSystemUiVisibility(int visibility)方法可传入的实参为:5.Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。
3.下文setSystemUiVisibility(int visibility)方法可传入的实参为:7.隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。
4.下文setSystemUiVisibility(int visibility)方法可传入的实参为:3.Activity全屏显示,且状态栏被隐藏覆盖掉。
5.下文Android4.4新特性第二个
二、查阅相关资料学习总结
调用方式如下:
getActivity().getWindow().getDecorView().setSystemUiVisibility;
getActivity().getWindow().getDecorView().getSystemUiVisibility;
参考资料:
setSystemUiVisibility(SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) dose not work
管理系统UI之二:隐藏Status Bar (Hiding the Status Bar)
setSystemUiVisibility(int visibility)方法可传入的实参为:
-
View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity不全屏显示(恢复到有状态栏的正常情况)。
-
View.INVISIBLE:隐藏状态栏,同时Activity会伸展全屏显示。
-
View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。
-
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。
-
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
-
View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
-
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。
-
View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。
Android4.4新特性又增加下面俩个:
View.SYSTEM_UI_FLAG_IMMERSIVE
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
另外
View.SYSTEM_UI_FLAG_LAYOUT_STABLE这个标志来帮助你的应用维持一个稳定的布局。