Android 沉浸式状态栏攻略 让你的状态栏变色吧

858 查看

一、概述

近期注意到QQ新版使用了沉浸式状态栏,ok,先声明一下:本篇博客效果下图:

9-28-1

关于这个状态栏变色到底叫「Immersive Mode」/「Translucent Bars」有兴趣可以去 为什么在国内会有很多用户把 「透明栏」(Translucent Bars)称作 「沉浸式顶栏」?上面了解了解,请勿指点我说的博文标题起得不对,thx。

恩,接下来正题。

首先只有大于等于4.4版本支持这个半透明状态栏的效果,但是4.4和5.0的显示效果有一定的差异,所有本篇博文内容为:

  • 如何实现半透明状态栏效果在大于4.4版本之上。
  • 如何让4.4的效果与5.0的效果尽可能一致。

看了不少参考文章,都介绍到这个库,大家可以了解:SystemBarTint

不过本篇博文并未基于此库,自己想了个hack,对于此库源码有空再看了。


二、效果图

先贴下效果图,以便和实现过程中做下对比

  • 4.4 模拟器

9-28-33

  • 5.x 真机

9-22-4

[new]贴个如果顶部是图片的效果图,其实是一样的,为了方便我就放侧栏的顶部了。

lalala

ok,有了效果图之后就开始看实现了。


三、实现半透明状态栏

因为本例使用了NavigationView,所以布局代码稍多,当然如果你不需要,可以自己进行筛减。

注意引入相关依赖:

(一)colors.xml 和 styles.xml

首先我们定义几个颜色:

res/values/color.xml

下面定义几个styles.xml

注意文件夹的路径:

values/styles.xml

values-v19

ok,这个没撒说的。注意我们的主题是基于NoActionBar的,android:windowTranslucentStatus这个属性是v19开始引入的。

(二)布局文件

activity_main.xml