Android UI过度绘制实战

1,035 阅读2分钟

1.什么是UI过度绘制(OverDraw)

在多层次重叠的UI结构里面,如果不可见的UI也在做绘制的操作,会导致某些像素区域被绘制了多次。这样就会浪费大量的CPU以及GPU资源。过度绘制最直观的影响就是会导致APP卡顿。还好系统有提供GPU过度绘制调试工具会在屏幕上用不同的颜色,来表明一个像素点位被重复绘制的次数。

  • 紫色 绘制一层
  • 绿色 绘制两层
  • 粉红色 绘制三次
  • 红色 绘制四层以上

在app开发中,完全是可以将UI绘制控制在3层以下的,而现实情况是很多开发者都没有太注意这块,很随意的setBackground,导致UI界面一片红的情况。接下来让我们一起看看怎么优化这块吧!

2.UI过度绘制检查

打开系统设置

Android设置中心->开发中选项->调试GPU过度绘制->现实过度绘制区域

开启之后,打开需要检查的应用界面,系统会提示现实过度绘制的区域。就像这样,看来Google自己的设置界面也有待优化呀!

3.消灭过度绘制

消灭UI过度绘制的核心思想,就是要减少setBackground的使用。操作原则如下:

  • 1.对于重叠View,被挡住的UI不设置背景颜色。
  • 2.背景可以统一,就在最底层设置背景,上层View不设置背景。
  • 3.避免使用layer-list图层

4.踩坑总结

  • layer-list导致多层绘制
  • 同一个项目,不同module,同样名字的资源,导致更改无效。
  • 在代码中和UI文件中都设置了background
  • 更改影响到其他页面(需要考虑一下更改文件的使用范围)
  • 有使用皮肤的,注意资源检查。