沉浸式状态栏
关于状态栏的沉浸,网上资料很多,可以如下几种
Style沉浸
基于NoActionBar主题的,所以在AndroidManifest
文件中的Activity要做对应的修改.
在style-19中设置状态栏沉浸
代码沉浸
|
|
开源库沉浸
SystemBarTint
总结
style方式和代码设置,本质上是殊途同归,只有极个别界面需要沉浸时建议使用代码,页面都需要沉浸时建议使用style,简单省事.
两者都是讲界面的整体布局沉浸到状态栏,所以布局的原点是位于屏幕的左上角的原点,并非是状态栏下方的原点.
需要在布局中使用android:fitsSystemWindows="true"
该属性无他,就是将该布局在计算长度的时,自动加上一截状态栏的长度,避免内容信息沉浸到状态栏.
看到贴吧有人通过动态添加一个状态栏的View的高度,并设置颜色.
更多的是使用SystemBarTint.
我的方案
使用Style进行整体沉浸,然后再界面根布局沉浸,设置好对应状态栏的背景色,已达到沉浸的效果.
真正的沉浸式
真正的沉浸式不是简单的将背景沉浸到状态栏,而是隐藏掉整个状态来,还有导航栏,比如各种手机视频直播的全屏模式,那才是真正的沉浸式,将整个界面全部沉浸进去,隐藏掉外层的状态栏,导航栏.
官方的沉浸
在新建项目的时候可以看到Activity模板中有一个就是FullScreen,我就从此入手,来了解真正的沉浸式是如何实现的.
全屏沉浸
|
|
首先真正解决全屏沉浸的是出现在19时,添加了SYSTEM_UI_FLAG_IMMERSIVE_STICKY,用于针对全屏应用更好的体验,而非像之前界面的点击时就会导致导航栏,状态栏的再度出现.
添加了该标示值时,用户在界面边缘滑动操作时,导航栏,状态栏会出现,但是在一段时间之后会自动隐藏,并不会一直出现.
需要注意的细节
在使用默认主题时,沉浸是需要注意针对ActionBar进行隐藏处理.
在隐藏Actionbar和为View添加沉浸标识时中间需要一个延缓的过渡时间,不能同时操作,不然沉浸的显示会出现问题,界面展示为:丢失ActionBar的高度,View整体向上移动了丢失的高度,然后导致底端一部分显示纯黑背景.