最近需求要做一个拉缩渐变的状态栏, 往上拉的时候, 需要显示 actionBar, 这个过程是渐变的, 顶部的图片背景能实现拉缩, 并且还要实现状态栏沉浸式
效果如如下:
实现状态栏的透明化
实现 ScrollView 的拉缩
实现 ActionBar 的渐变
实现
1, 至于试下实现 ScrollView 的拉缩这个效果很简单重写 onTouchEvent 方法, 利用滑动的垂直方向的距离, 然后在设置图片的大小
这里要注意的是: 在手指释放的时候需要进行恢复图片的高度
2,ActionBar 的透明度很简单了, 在 onScrollChanged 里进行操作即可
3, 至于沉浸式状态栏就很简单了, 之前写过帖子
你这样玩过 Android 沉浸式状态栏吗 - 教你玩出新花样
Activity 样式 , 状态栏透明, 屏幕亮度问题全面解析
这里我简单的封装了一些工具类
在相应的 Activity 或基类执行这段代码就 ok 了.
可见在 4.4 到 5.0 的系统, 5.0 及以上系统的处理方式有所不同
除了这种代码修改额方式外, 还可以通过主题来修改, 需要在 values,values-v19,values-v21 目录下分别创建相应的主题:
给相应 Activity 或 Application 设置该主题就 ok 了.
两种方式根据需求选择就好了, 到这里我们就完成了第一步, 将状态栏透明化了.
完成了第一步, 我们开始给状态栏加上想要的色彩吧!
在 values,values-v19 目录添加如下尺寸:
关于 25dp, 在有些系统上可能有误差, 这里不做讨论!
2.1 页面顶部使用 Toolbar(或自定义 title) 一般情况状态栏的颜色和 Toolbar 的颜色相同, 既然状态栏透明化后, 布局页面延伸到了状态栏, 何不给 Toolbar 加上一个状态栏高度的顶部 padding 呢:
效果图下:
来源: http://blog.51cto.com/14009815/2311419