5

ObjectAnimator와 ViewPropertyAnimator의 속성 값 변경의 차이점은 무엇입니까? 진행되는 objectAnimator 이상 동안 Android ObjectAnimator 대 ViewPropertyAnimator

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

나는 myObject.getX()을 시도하고, 내가 100.0에 0.0f를 사이에 - 더 - 방법으로 값을 얻었다. 내가 myObject.getX() ' ViewPropertyAnimator 이상 동안 것이 진행되고 거라고 때

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

그러나, 나는 정확한 100.0을 얻었다.

나는이 차이점을 알아낼 수 없습니다.

미리 감사드립니다.

답변

5

필드에 ViewPropertyAnimator을 사용하여 애니메이션을 적용하도록 요청하면 실제로는 x 필드에 애니메이션이 적용되지 않으며 translateX 필드에 애니메이션을 적용합니다. 이것이 x 필드 변경을 볼 수없는 이유입니다. 안드로이드 소스 코드에서

ViewPropertyAnimator.java 의 : 반면에
case X: 
    renderNode.setTranslationX(value - mView.mLeft); 
    break; 

ObjectAnimator

속성을 애니메이션을 반사를 사용 - 오히려 지원 활동의 프리셋리스트보다. 따라서 "X"필드에 애니메이션을 적용하라고 말하면 "setX"을 직접 호출합니다.

+0

ViewPropertyAnimator.translationX()는 어떻게됩니까? ViewPropertyAnimator.x()와 translationX()가 실제로 같은 의미입니까? – Hwang

+0

translationX는 view의 mLeft 값을 보정하지 않고 translationX에도 영향을줍니다. –

+0

나는이 대답이 정확하다고 생각하지 않는다. 참조가 있으십니까? – black