Android沉浸式状态栏总结

2020-02-24  本文已影响0人  肖霄的潇潇

1.Activity,无toolbar

1.1 4.4

1.1.1 设置状态栏颜色
var decorView = window.decorView
var option = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
decorView.systemUiVisibility = option

标题栏和状态栏会重叠
1.在标题栏的上方添加一个大小和 StatusBar 大小一样假的状态栏 View,View 的 BackgroundColor 可以自己设置成标题栏一样的颜色
decorView.addView(statusBarView);
2.给decorView设置paddingTop
decorView.setPadding(0, mBarConfig.getStatusBarHeight(), 0, 0)

1.1.2 图片伸入状态栏

var decorView = window.decorView
var option = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
decorView.systemUiVisibility = option

WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS在4.4状态栏顶部是有一个黑色阴影渐变,无法改变

1.1.3 全屏

    var option = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
                 View.SYSTEM_UI_FLAG_FULLSCREEN 

状态栏导航栏收缩,是真全屏效果,
点击页面的任何位置或下拉状态栏,状态栏导航栏重新显示,不自动收回

var option = View.SYSTEM_UI_FLAG_FULLSCREEN or
            View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
            View.SYSTEM_UI_FLAG_IMMERSIVE

只有下拉状态栏,状态栏导航栏重新显示,不自动收回,状态栏是主题颜色,导航栏黑色

var option = View.SYSTEM_UI_FLAG_FULLSCREEN or
            View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
            View.SYSTEM_UI_FLAG_IMMERSIVE

只有下拉状态栏,状态栏导航栏重新显示,不自动收回,状态栏是主题颜色,导航栏黑色

var option = View.SYSTEM_UI_FLAG_FULLSCREEN or
            View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

只有下拉状态栏,状态栏导航栏重新显示,自动收回,状态栏导航栏透明且有黑色阴影

1.2 5.0

1.2.1 设置状态栏颜色
 var decorView = window.decorView
 var option = WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
 window.statusBarColor = Color.RED
 decorView.systemUiVisibility = option

WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS是5.0新加的api

1.2.2 图片伸入状态栏
 var decorView = window.decorView
var option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
                View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
window.statusBarColor = Color.TRANSPARENT
window.navigationBarColor = Color.TRANSPARENT
decorView.systemUiVisibility = option

View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN,View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION不会让状态栏导航栏隐藏,顶部view会你伸入状态栏,底部view,会伸入导航栏,这时状态栏是主题色,导航栏是黑色,只有window.statusBarColor = Color.TRANSPARENT,window.navigationBarColor = Color.TRANSPARENT时,才能显示顶部底部被遮挡的部分

View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN,View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION不会让状态栏导航栏隐藏,只有View.SYSTEM_UI_FLAG_FULLSCREEN,View.SYSTEM_UI_FLAG_HIDE_NAVIGATION才会让状态栏导航栏隐藏,但还是会让用户下拉出状态栏,上拉出导航栏

1.3 6.0

View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 可以设置状态栏字色和图标浅黑色。

上一篇下一篇

猜你喜欢

热点阅读