过度绘制
屏幕上的像素点不止绘制一次。照常理来说,屏幕要显示内容就是在屏幕像素点上绘制像素,但重叠情况会导致在一个屏幕像素点上绘制了多次,这就叫做过度绘制。开启过度绘制调试:
adb shell setprop debug.hwui.overdraw show
关闭过度绘制调试:
adb shell setprop debug.hwui.overdraw false
- 原色:没有过度绘制
- 蓝色:1 次过度绘制
- 绿色:2 次过度绘制
- 粉色:3 次过度绘制
- 红色:4 次及以上过度绘制
过度绘制优化
- 主题里会自带一个背景,这就是第一次绘制,但通常是不需要这个背景的,所以可以设置主题
<item name="android:windowBackground">@null</item>
不要背景,减少一次绘制 - 通过裁切,canvas的clip相关方法进行绘制区域裁切,将需要绘制的部分裁切出来,减少不可见部分的绘制优化过度绘制。抽屉布局就是这种做法,经过一系列判断是否进行裁切,将不需要显示的部分裁切出绘制区域完成优化。
- 主题里会自带一个背景,这就是第一次绘制,但通常是不需要这个背景的,所以可以设置主题
各个View的background属性
例如ImageView设置background后再设置src同一片像素区域就绘制两次,设置背景最好也用设置src替代