Android的沉浸式状态栏是在4.4以后推出的,以5.0为界限设置状态栏的方式就有所变化,下面就针对5.0前后沉浸式状态栏的实现方式做个总结:
1、在5.0以前状态栏的设置方式:
先获取window对象
Window window = getWindow();
添加FLAG_TRANSLUCENT_STATUS的标志(为窗口启用此标志时,它会自动设置
*系统UI可见性标志)
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
就这样一行代码搞定4.4至5.0版本的沉浸式设置;
2、5.0以后状态栏设置方式:
先获取window对象
Window window = getWindow();
清楚FLAG_TRANSLUCENT_STATUS的标志
window.clearFLags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
添加FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS(
指示此窗口负责绘制背景的标志系统栏,如果设置,系统栏将以透明背景绘制此窗口中的相应区域填充了指定的颜色)
window.addFLags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
设置状态栏颜色透明
window.setStatusBarColor(Color.TRANSPARENT);
获取顶层布局DecorView的ui信息
int visibility = window.getDecorView.getSystemUiVisibility();
设置布局内容全屏显示“|=”代表追加
visibility |=View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
阻止内容区域大小发生变化
visibility |=View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
将追加过后的参数重新赋值给顶层布局
window.getDecorView().setSystemUiVisibility(visibility);