为什么要进行UI绘制优化?
android系统每16ms(1000/60 ~=16ms)会发出VSYNC信号,如果一帧数据在16ms内没有完成绘制就会出现卡顿;
绘制过程主要由CPU计算纹理,GPU绘制位图信息。
如何减少这两部分的时间 以至于在 16ms 完成呢?
一、GPU 减少重复绘制的时间
在开发者选项中打开GPU过度绘制的开关,可以看到绘制有四种颜色。
蓝色:过度绘制1次。绿色:过度绘制2次。淡红色:过度绘制3次。红色:过度绘制>=4次。
1.将没有必要的背景设成null或者透明,比如将activity有设置背景时,可以去掉Theme中背景添加:
<item name="android:windowBackground">@null</item>
2.自定义控件中onDraw方法做了过多重复绘制
二、CUP减少计算时间
Android studio 中打开layout inspector查看布局结构
1、layout扁平化,减少不必要的嵌套
2、是否可以使用merger合并到上层
3、重复布局使用include