自定义视图(4) —— 优化视图

android

现在,您已经有了一个设计良好的视图,可以响应状态之间的手势和转换,确保视图运行得很快。
为了避免在回放期间感觉迟钝或停滞的UI,确保动画始终以每秒60帧的速度运行。

少做事,频率少

为了加快视图的速度,从经常调用的例程中删除不必要的代码
先从onDraw()开始,这将给你最大的回报。
特别是您应该消除onDraw()中的分配,因为分配可能会导致垃圾收集,从而导致口吃。
初始化期间或在动画之间分配对象
当动画运行时,不要进行分配。

除了使onDraw()更精简,也要确保它被尽可能少地调用
大多数对onDraw()的调用都是调用invalidate()的结果,因此消除不必要的invalidate()调用

另一个非常昂贵的操作是遍历布局。
每当视图调用requestLayout()时,Android UI系统需要遍历整个视图层次结构,以找出每个视图需要多大的大小。
如果发现冲突的度量,可能需要多次遍历层次结构。
UI设计人员有时会创建嵌套的ViewGroup对象的深层层次结构,以便让UI正常工作。
这些深层视图层次结构会导致性能问题。
使您的视图层次尽可能地浅

如果您有一个复杂的UI,请考虑编写一个自定义的ViewGroup来执行它的布局。
与内置视图不同,您的自定义视图可以对其子的大小和形状做出特定于应用程序的假设,因此避免遍历其子来计算度量。
PieChart的例子展示了如何将ViewGroup扩展为自定义视图的一部分。
PieChart有孩子的观点,但从来没有衡量他们的观点。
相反,它直接根据自己的定制布局算法来设置它们的大小。

Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2021 朝着牛逼的道路一路狂奔 All Rights Reserved.

访客数 : | 访问量 :