追踪过度绘制
Show GPU Overdraw工具
在手机的开发者选项里打开“Show GPU Overdraw toggle this”,这时打开手机,应用上就会出现一层颜色蒙版,其中:
没有颜色: 意味着没有overdraw。像素只画了一次。
蓝色: 意味着overdraw 1倍。像素绘制了两次。大片的蓝色还是可以接受的(若整个窗口是蓝色的,可以摆脱一层)。
绿色: 意味着overdraw 2倍。像素绘制了三次。中等大小的绿色区域是可以接受的但你应该尝试优化、减少它们。
浅红: 意味着overdraw 3倍。像素绘制了四次,小范围可以接受。
深红: 意味着overdraw 4倍。像素绘制了五次或者更多。这是错误的,要修复它们。
GPU Profiler
蓝色: 表示测量绘制时间
红色: 表示执行时间、
橙色: 表示处理时间
避免UI卡顿:
- 避免在onDraw中创建对象
- 使用对象池
- 减少View层级
- 避免在UI顶层使用RelativeLayout-------其measure两次
- 自定义控件控制绘制的复杂度
优化过度绘制
降低View层级
RelativeLayout代替LinearLayout
使用merge标签,不需要指定父容器
不必要的背景
去掉window默认背景 getWindow().setBackgroundDrawable(null); 去掉不必要的背景
- ClipRect和QuickReject
ClipRect 只绘制和渲染指定的区域 QuickReject 节约GPU资源
- ViewStub 占位符
- .9图用作背景