Android 性能优化-过度绘制的实际解决措施

过度绘制是指在Android中同一像素在帧时间内被绘制多次,增加性能负担。通过设置>开发者选项>调试GPU过度渲染,可以显示不同级别的过度绘制区域,颜色从蓝到深红表示绘制层次递增。避免过度绘制的方法包括使用ConstraintLayout替代LinearLayout或RelativeLayout,移除窗口默认背景,以及简化XML布局。这些优化有助于提升应用的性能和用户体验。
摘要由CSDN通过智能技术生成

什么是过度绘制(Overdraw)?

屏幕上的某个像素在同一帧的时间内被绘制了多次。在多层次的UI结构里面, 被盖住的底层UI也在做绘制的操作,这就导致某些像素区域被绘制了多次。

上面我简单画了一个图,一般来说 重叠四层及四层以上的绘制层级就算过度绘制。

一般避免过度绘制的标准是:允许有部分四层重叠,不允许存在 >=五层 的重叠。

如何找到过度绘制的地方?

1.用手机系统提供的过度绘制检测工具:

设置 => 开发者选项 => 调试GPU过度渲染 => 显示过度渲染区域。

这时候,手机会根据绘制层数,给所有的view持续渲染背景色。

四种颜色代表了四种不同的绘制程度:
蓝色: GPU过度绘制了 1倍。像素绘制了两次。
绿色: GPU过度绘制了 2倍。像素绘制了三次,中范围可以接受。
淡红: GPU过度绘制了 3倍。像素绘制了四次,小范围可以接受。
深红: GPU过度绘制了 4倍及更多。像素绘制了五次或者更多,不接受,请整改。

2.用高版本AndroidStudio自带的小工具进行查看

 当你点击层次较深的View 左边就会显示出一个彩色的小条。

如果你点击层次较浅的view,那么左边将不会出现这个小条。

如何解决过度绘制?

1.LinearLayout或者RelativeLayout改为ConstraintLayout

ConstraintLayout更加有效,不太会用的看这里:Android ConstraintLayout约束布局 常用属性和辅助控件_赵星海的博客-CSDN博客

2.移除Window默认的Background

getWidow.setBackgroundDrawable(null);

​​​​​​​3.移除XML布局文件中非必需的Background

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵星海(深海呐)

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值