简单的布局优化
Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,那么整个过程如果保证在16ms以内就能达到一个流畅的画面。
检测:
1. 设置 -> 开发者选项 -> 调试GPU过度绘制 -> 显示GPU过度绘制
2. ADB指令
打开调试GPU过度绘制 adb shell setprop debug.hwui.overdraw show
关闭调式GPU过度绘制 adb shell setprop debug.hwui.overdraw false
效果
无过度绘制(一个像素只被绘制了一次) (原色)
过度绘制x1(一个像素被绘制了两次) (蓝色)
过度绘制x2(一个像素被绘制了三次) (绿色)
过度绘制x3(一个像素被绘制了四次) (粉色)
过度绘制x4+(一个像素被绘制了五次以上) (红色)
避免过度绘制处理:
一:移除不必要的background
二:clipRect:去掉重复绘制部分。
多重嵌套问题:
1.使用ConstraintLayout,可以实现完全扁平化的布局,减少层级。
2.RelativeLayout本身尽量不要嵌套使用。
3.嵌套的LinearLayout中,尽量不要使用weight,因为weight会重新测量两次。
4.推荐使用merge标签,可以减少一个层级。
5.使用ViewStub延迟加载。
总结: