如果您有一个精心设计的视图可以响应手势和状态之间的转换,请确保该视图快速运行。为避免播放过程中界面响应缓慢或卡顿,请确保动画始终以每秒 60 帧的速度运行。
加快观看速度
为了提高视图的运行速度,可从频繁调用的例程中剔除不必要的代码。从 onDraw()
开始,这将为您带来最大的回报。特别是应消除 onDraw()
中的分配,因为分配可能会导致垃圾回收,从而造成卡顿。请在初始化期间或动画之间分配对象。切勿在动画运行期间进行分配。
除了精简 onDraw()
之外,还应确保尽可能降低调用它的频率。对 onDraw()
的大多数调用都是调用 invalidate()
的结果,因此可以避免不必要的 invalidate()
调用。
另一种成本非常高昂的操作是遍历布局。当视图调用 requestLayout()
时,Android 界面系统会遍历整个视图层次结构,以确定每个视图所需的大小。如果发现冲突的测量值,可能会多次遍历层次结构。界面设计人员有时会创建由嵌套的 ViewGroup
对象组成的深层次结构。这些深层视图层次结构会导致性能问题,因此应尽可能浅层视图。
如果您的界面比较复杂,不妨考虑编写自定义 ViewGroup
来执行其布局。与内置视图不同,自定义视图可以对其子项的尺寸和形状做出特定于应用的假设,从而避免遍历其子项以计算测量值。
例如,如果您有一个自定义 ViwGroup
,它不通过调整自身大小来适应其所有子视图,就可以避免测量所有子视图所产生的开销。如果您使用适合各种用例的内置布局,则无法进行此优化。