2016-07-05 21 views
5

Was ist der Unterschied zwischen ObjectAnimator und ViewPropertyAnimator, der den Eigenschaftswert ändert?Android ObjectAnimator vs ViewPropertyAnimator

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

Ich versuchte myObject.getX() während über objectAnimator ist noch nicht abgeschlossen, und ich bekam einen on-the-way-Wert zwischen 0.0f bis 100,0.

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

aber ich habe genau 100,0 wenn ich myObject.getX() ‚d während über ViewPropertyAnimator ist noch nicht abgeschlossen.

Ich kann nicht herausfinden, was diesen Unterschied ausmacht.

Vielen Dank im Voraus.

Antwort

5

Wenn Sie das x Feld mit einem ViewPropertyAnimator zu animieren fordern, ist es nicht wirklich das x Feld animiert - es belebt das translateX Feld. Aus diesem Grund können Sie den Feldwechsel x nicht sehen.

Von dem Code Android Quelle in ViewPropertyAnimator.java:

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

ObjectAnimator auf der anderen Seite verwenden Reflexionseigenschaften zu animieren - eher als eine voreingestellte Liste der unterstützten Aktionen. Wenn Sie also das Feld "X" animieren, ruft es direkt "setX" auf.

+0

Was ist mit ViewPropertyAnimator.translationX()? Bedeutet das, ViewPropertyAnimator.x() und TranslationX() sind eigentlich gleich? – Hwang

+0

translationX wirkt sich auch auf translationX aus, ohne den mLeft-Wert der Ansicht zu kompensieren. –

+0

Ich glaube nicht, dass diese Antwort richtig ist. Hast du irgendwelche Hinweise? – black

Verwandte Themen