更多关于Android渲染性能请点击这里
系统UI组件的优化
对不可见的UI组件进行绘制更新会导致Overdraw。例如Nav Drawer从前置可见的Activity滑出之后,如果还继续绘制那些在Nav Drawer里面不可见的UI组件,这就导致了Overdraw。为了解决这个问题,Android系统会通过避免绘制那些完全不可见的组件来尽量减少Overdraw。那些Nav Drawer里面不可见的View就不会被执行浪费资源。
自定义UI组件clipRect
对于那些过于复杂的自定义的View(通常重写了onDraw方法),Android系统无法检测在onDraw里面具体会执行什么操作,系统无法监控并自动优化,也就无法避免Overdraw了。但是我们可以通过canvas.clipRect()来帮助系统识别那些可见的区域。这个方法可以指定一块矩形区域,只有在这个区域内才会被绘制,其他的区域会被忽视。这个API可以很好的帮助那些有多组重叠组件的自定义View来控制显示的区域。同时clipRect方法还可以帮助节约CPU与GPU资源,在clipRect区域之外的绘制指令都不会提交至硬件,那些部分内容在矩形区域内的组件,仍然会得到绘制。
现在,任何与clipRect有部分交叉的内容还是会被绘制,这也是clipRect在CPU方面帮助定义排除矩形,从而从像素层面上让GPU避免为剪裁部分上色的原因
自定义UI组件quickreject()
我们还可以使用canvas.quickreject() 在onDraw中来判断是否没和某个矩形相交,从而跳过那些非矩形区域内的全部处理过程。

本文探讨了Android UI渲染性能的优化策略,包括系统UI组件优化、自定义UI组件使用clipRect和quickreject()方法来减少Overdraw,从而提高应用效率。
2665

被折叠的 条评论
为什么被折叠?



