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。
我无法弄清楚是什么造成了这种差异。
提前致谢。
答案 0 :(得分:5)
当您请求使用x
为ViewPropertyAnimator
字段设置动画时,它实际上并未对x
字段设置动画效果 - 它会为translateX
字段设置动画。这就是您无法看到x
字段更改的原因。
来自 ViewPropertyAnimator.java 中的Android源代码:
case X:
renderNode.setTranslationX(value - mView.mLeft);
break;
另一方面, ObjectAnimator
使用反射来动画属性 - 而不是预设的支持动作列表。因此当你告诉它为#34; X
"字段,它调用" setX
"直接