外观
动画卡顿时 怎样减少 View 层的开销?
标准回答
我会先确认耗时发生在动画计算、布局绘制还是 GPU。只做移动、缩放和透明度变化时,尽量使用合适的属性和已有绘制内容,避免每帧改 LayoutParams 导致反复 measure 和 layout。自定义绘制中缓存不随帧变化的对象和计算,减少无效 invalidate、重度透明叠加和过度绘制。需要硬件 layer 时要测量其内存与合成成本,并在动画结束后恢复;同时检查图片大小和每帧分配引起的 GC。
延伸追问
动画是否达到目标帧率应看实际帧期限和呈现结果,不能只观察 ValueAnimator 回调是否持续执行。
内容来源
- Android Framework 知识手册 · 原条目
5-10