状态栏指定android手机上顶部显示手机状态信息的位置。
透明状态栏是android 自4.4开始新加入的功能,他可以是状态栏根据我们自己想要的颜色进行定义,使titleBar能够和状态栏融为一体,增加沉浸感。
实现中遇到的阻碍
因为状态栏是在4.4加入的,所以在4.4以前的系统上无法实现。现在世面上的手机android4.4一下的占比不是很大,所以不是太影响。
网上有很多关于透明状态栏实现的技术博客,以及我之前的博客透明状态栏(沉浸式状态栏)中,实现方式为通过设置和实现。
但通过属性设置的方式在使用中会出现沉浸状态不一样的现象,在5.0及以上的系统中使用透明状态栏不是完全透明的,会在透明的基础上添加一层半透明的阴影,非常的不友好。于是解决在不同系统版本之间的适配是主要问题。
对于透明状态栏,有以下两种情况
- 设置状态栏为一个单纯的颜色。
- 顶部是图片时,使图片沉浸到状态栏上。
对于适配,有以下两种情况需要适配
4.4系统
5.0及以上系统
那么思路如下:
当状态栏需要设置一个单纯的颜色时:
- 4.4:设置属性,并且手动添加一个和状态栏高度等高的View。
- 5.0及以上:不设置属性,直接设置的色值。
当状态栏需要设置一个图片
- 4.4:直接设置属性。
- 5.0:不设置,同时设置状态栏颜色透明,并使用另一个属性。
代码实现
注释已经很详细了,不做过多的解释。
使用
注意:StatusBarUtils中已经完全处理,使用时xml文件中不需要添加特殊处理。
- MainActivity(设置状态栏为一个纯色)
xml文件
java文件
- ImageViewTranslucentActivity(顶部为图片)
文件
java文件
效果
- 4.4效果
- 5.0及以上的效果