安卓沉浸式状态栏始于API—4.4
根据系统的各样化,沉浸式分为全沉浸和渐变式沉浸
设置全局沉浸分为2部分:
1、设置样式AndroidManifest中application的theme
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">false</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
2、为了动态控制Activity的沉浸式状态,建议写在自定义BaseActivity(继承Activity)中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewGroup contentFrameLayout = (ViewGroup) findViewById(Window.ID_ANDROID_CONTENT);
View parentView = contentFrameLayout.getChildAt(0);
//系统默认为true
parentView.setFitsSystemWindows(false);
//有些系统为渐变半透明状态,需要设置
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
//全透明状态栏 _顶部
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//Activity全屏显示,但是状态栏不会被覆盖掉,而是正常显示,只是Activity顶端布局会被覆盖住
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
}
}
注意:其中 setFitsSystemWindows 效果与 setSystemUiVisibility 对等