版本要求
沉浸式状态栏效果是在android 4.4的时候出现的,所以只有Android4.4及以后的版本才能使用沉浸式效果
实现方式
大体上可以分为两种思路:
1.修改状态栏的颜色使之与标题栏的背景色保持一致,以达到沉浸式效果
2.修改状态栏颜色为透明色,将标题栏扩展到状态栏下面,以达到沉浸式效果
需要注意的坑
1.需要注意的是状态栏的字体颜色
目前可实现沉浸式效果的状态栏的字体颜色基本上只有两种,黑色和白色,但并非所有厂商都开放了状态栏颜色修改接口,就需要考虑一下情况:
a.标题栏背景色为白色:
可以更改状态栏颜色的机型(如Android6.0以上版本几乎都可以)将状态栏颜色改为黑色;
不可以更改状态栏颜色的机型(如Android6.0以下部分机型,锤子),则需要将状态栏设置成半透明,否则白色背景会白色状态栏的文字看不到
b.标题栏为非白色:
建议采用上面实现方式2,配合android:fitsSystemWindows="true"实现
可在BaseActivity中统一设置,毕竟并非所有的机型都可设置状态栏颜色(如锤子手机android5.1.1,最多可以做到半透明,也相当于沉浸式效果达到了)
2.白色背景标题栏的app需要分条件进行设置
目前开放了状态栏文字颜色更改的厂商系统有MIUI、FlymeOS
a.Android6.0以上
更改状态栏字体颜色为黑色,并将状态栏设置为白色,系统方法设置即可
b.MIUI、FlymeOS
同Android6.0以上做法,需要注意判断系统类型,并通过开放的接口方法进行设置
c.Android4.4到Android6.0之间的版本
建议这种情况,做半透明处理,因为这个版本段的机型要么可以完全沉浸式但不能改状态栏颜色,要么就是改不了只能做到半透明效果
可参考的工具
工具的好处是比自己完全重新去开发一个更加可靠与高效
1.https://github.com/jgilfelt/SystemBarTint,有四年没有更新维护了,部分Android6.0以上机型不能完全通过这个工具实现,需要自己加代码
2.https://github.com/gyf-dev/ImmersionBar,注释很详细的工具,考虑到了所有可能遇到的坑,包括emui
3.https://github.com/laobie/StatusBarUtil,轻量级的工具类,目前的沉浸式效果都能实现,特别是抽屉式布局方式的支持