6

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);

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

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

提前致谢。

4

1 回答 1

5

当您请求x使用 a 为该字段设置动画时ViewPropertyAnimator,它实际上并未为该x字段设置动画 - 它为该translateX字段设置动画。这就是您看不到x字段变化的原因。

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

case X:
    renderNode.setTranslationX(value - mView.mLeft);
    break;

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

于 2016-07-05T14:14:44.277 回答