Android ObjectAnimator 与 ViewPropertyAnimator

Android ObjectAnimator vs ViewPropertyAnimator

ObjectAnimator 和 ViewPropertyAnimator 改变 属性 值有什么区别?

ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(myObject, "X", 0.0f, 100.0f);

我尝试了 myObject.getX() 而上面的 objectAnimator 正在进行中,我得到了一个介于 0.0f 到 100.0 之间的途中值。

myObject.setX(0.0f);
myObject.animate().x(100.0f);

但是,当我在 ViewPropertyAnimator 以上 myObject.getX() 进行时,我得到了精确的 100.0。

我不知道是什么造成了这种差异。

提前致谢。

当您请求使用 ViewPropertyAnimatorx 字段设置动画时,它实际上并没有为 x 字段设置动画 - 它为 translateX 字段设置了动画。这就是为什么您看不到 x 字段更改的原因。

来自 ViewPropertyAnimator.java 中的 Android 源代码:

case X:
    renderNode.setTranslationX(value - mView.mLeft);
    break;
另一方面,

ObjectAnimator 使用反射来动画属性 - 而不是支持操作的预设列表。因此,当您告诉它为“X”字段设置动画时,它会直接调用“setX”。