对Android沉浸式布局的思考

最近分到一个需求,修改本模块的Title样式与风格。之前的bg是全屏的,通过设置状态栏透明来扩展bg颜色到状态栏上。

现在的bg要求不再充满,这就难住我了。

因为之前的bg是gradient的drawable,而drawable设置为View背景的时候,默认是填充的,所以想修改大小是很难的。

1.layer-list

如果设置bottom,屏幕不好适配;

如果设置top,需要背景色,过度绘制

2.图片

apk体积增大,过度绘制

3.View

状态栏无法侵入,默认会读取根View上方的与状态栏等大的区域背景,子View的不会获取

4.getWindow().setStatusBackgroundColor()

顶部只能设置color,而我的需求是gradient drawable,无法设置,我也无法反射创建状态栏

5.占用状态栏空间

设置一些标记位,让状态栏透明,且空间可以被占用,反射获取状态栏高度,创建等尺寸View代替状态栏

最终解决方案:2

下一步背景图可能改成纯色,届时替换方案4,这里着重讲4


4关键在于需要支持不同厂商,因为各厂商都改了ROM。5也差不多,需要适配。

所幸网上已有开源实现——StatusBarCompat

一行代码解千愁

猜你喜欢

转载自blog.csdn.net/qq_36523667/article/details/80821878