UI绘制优化

2019-11-14  本文已影响0人  放肆滴微笑

CPU和GPU

名称 介绍 作用
CPU 处理器 将 UI 对象转换为一系列多边形和纹理(计算画图的方法,可以理解为通过公式画出的矢量图)
GPU 相当于显卡 将纹理栅格化(将位图画到屏幕上)

60Hz 刷新频率由来

Android 系统每隔 16ms 发出 VSYNC (垂直同步)信号 (1000ms/60=16.66ms) ,触发对 UI 进行渲染, 如果每次渲染都成 功这样就能够达到流畅的画面所需要的 60fps ,为了能够实现 60fps ,这意味着计算渲染的大多数操作都必须 在 16ms 内完成。

卡顿原理分析

当一帧画面渲染时间超过16ms的时候,垂直同步机制会让显示器硬件等待GPU完成栅格化渲染操作,这样会让一帧画面多停留16ms,甚至更多,这样就造成了丢帧,也让用户看起来画面停顿


image.png

16ms所干的2件事情
1、将UI对象转换成一系列多边形和纹理
2、CPU传递数据到GPU

优化方案

1、过渡绘制优化(减少GPU工作量)
位置:开发者选项-->调试GPU过渡渲染-->显示过渡绘制区域

image.png
蓝色:过渡绘制1次
淡绿:过渡绘制2次
淡红:过渡绘制3次
深红:过渡绘制4次及以上
1.1减少背景重复
非业务需要,不要去设置背景
1.2主题中设置背景
1.2.1去掉单个主题设置背景
可以在setContentViewer之前
getWindow().setBackgroundDrawable(null);

1.2.2 去掉所有Activity中主题设置中的属性,直接在style.xml中设置,之后在Activity中单独设置背景

<item name="android:windowBackground">@null</item>

2、 自定义View 使用裁剪 减少空间指间的重合部分
Android7.0 后系统优化,invalidate()方法不在执行测量和布局动作
3、布局优化
3.1减少不必要嵌套
3.2使用merger避免与父容器重复

image.png
可以看层级

总结

上一篇 下一篇

猜你喜欢

热点阅读