Android ObjectAnimator与ViewPropertyAnimator

时间:2016-07-05 13:55:15

标签: java android objectanimator animator 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);

然而,当myObject.getX()' d ViewPropertyAnimator正在进行时,我得到了精确的100.0。

我无法弄清楚是什么造成了这种差异。

提前致谢。

1 个答案:

答案 0 :(得分:5)

当您请求使用xViewPropertyAnimator字段设置动画时,它实际上并未对x字段设置动画效果 - 它会为translateX字段设置动画。这就是您无法看到x字段更改的原因。

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

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

ObjectAnimator使用反射来动画属性 - 而不是预设的支持动作列表。因此当你告诉它为#34; X"字段,它调用" setX"直接