Skip to content
阅读进度

ObjectAnimator 和 ValueAnimator 的核心区别是什么?何时选择其中一种? ​

返回 View 与显示链路 目录

标准回答 ​

ValueAnimator 负责算“现在的数值”;ObjectAnimator 还会把数值写进目标对象的属性。

  • 自定义绘制或多个属性的组合更新,适合 ValueAnimator。
  • 目标有可操作属性时,ObjectAnimator 可简化属性更新。
  • 传统 View 属性动画通常仍由主线程参与调度。

通俗例子 ​

让 View 从透明变为不透明,ObjectAnimator 可更新 alpha;一个数值同时驱动圆半径和颜色时,ValueAnimator 里自己分配更方便。

深入解释 ​

**谁负责中间值:**两者都可按时间和插值规则计算中间值。ValueAnimator 把值交给你的监听器;ObjectAnimator 进一步把值设置到目标属性。

**怎样选择:**只改变一个已有属性,如 alpha,用 ObjectAnimator 直接;同一个进度还要同时算路径位置、圆半径和业务显示,可以在 ValueAnimator 中自己分配。

易混淆点 ​

看到硬件加速就断言动画完全不依赖主线程,是错误的。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。