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

什么是过度绘制(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

 
 

Guess you like

Origin blog.csdn.net/qq_39731011/article/details/120207263