Android-Eigenschaften, die mit ObjectAnimator animiert werden können
Lesezeit: 3 Minuten
Kathal Comerford
Ich fange an, mit Eigenschaftsanimationen über Ansichtsanimationen herumzuspielen, da ich eine Ansicht habe, die skaliert und andere aus dem Weg räumen muss, wie dies der Fall ist. Ich habe einige Beispiele gesehen, aber ich frage mich nur, ob es irgendwo eine Liste der Eigenschaften gibt, die mit diesen Klassen geändert werden können. Zum Beispiel habe ich ein Tutorial gesehen, das eine schnelle Rotation mit:
ObjectAnimator.ofFloat(aniView, "rotation", 360)
Das ist ziemlich cool, aber ich hätte die Rotationseigenschaft nicht gekannt, wenn es nicht genau dieses Tutorial gegeben hätte. Gibt es eine umfassende Liste dessen, was getan werden kann? Die besondere Eigenschaft, die ich animieren möchte, ist das Gewicht einer Ansicht in einem LinearLayout, falls jemand dazu einen speziellen Rat hat.
Besser spät als nie, deshalb hier die umfassende Liste der Eigenschaften, die mit ObjectAnimator animiert werden können.
Ich bin gespannt, ob das die vollständige Liste ist? Auf 9OldAndroid gibt es ein Beispiel, das die Hintergrundfarbe einer Ansicht animiert, die nicht in der Liste angegeben ist. nineoldandroids.comObjectAnimator.ofInt(this, "backgroundColor", /*Red*/0xFFFF8080, /*Blue*/0xFF8080FF);
Eine vollständige Liste wird es nicht geben, da sie mit allem funktioniert, was einen korrekten Getter/Setter (Reflexion) für Namen hat, oder indem eine benutzerdefinierte Eigenschaft definiert wird. Siehe stackoverflow.com/a/28381280/1290264.
– bkorso
29. Oktober 2015 um 16:08 Uhr
Diese Liste ist nicht einmal im Entferntesten vollständig, da sie für jedes zugängliche Objekt mit jedem zugänglichen Setter verwendet werden kann.
– Jason Hartley
19. Juli 2016 um 16:03 Uhr
bkorso
Das Dokumente implizieren, dass jeder Wert mit verwendet werden kann ObjectAnimator solange Sie einer Namenskonvention folgen:
Die Objekteigenschaft, die Sie animieren, muss eine Setter-Funktion (in Kamelfall) in Form von haben set<propertyName>(). Da der ObjectAnimator die Eigenschaft während der Animation automatisch aktualisiert, muss er mit dieser Setter-Methode auf die Eigenschaft zugreifen können. Wenn der Eigenschaftsname beispielsweise lautet fooSie müssen eine haben setFoo() Methode. Wenn diese Setter-Methode nicht existiert, haben Sie drei Möglichkeiten:
Fügen Sie die Setter-Methode zur Klasse hinzu, wenn Sie die Rechte dazu haben.
Verwenden Sie eine Wrapper-Klasse, zu deren Änderung Sie berechtigt sind, und lassen Sie diesen Wrapper den Wert mit einer gültigen Setter-Methode empfangen und an das ursprüngliche Objekt weiterleiten.
Verwenden Sie stattdessen ValueAnimator.
[…]
Zu deiner Frage, View hat die Methode setRotation(float) — das gibt Ihnen einen Hinweis, dass es verwendet werden kann. Insbesondere hier ist, wie Sie es mit einem bestimmten tun würden TimeInterpolator:
ObjectAnimator anim = ObjectAnimator.ofFloat(myView, "rotation", 0f, 90f);
anim.setDuration(2000); // Duration in milliseconds
anim.setInterpolator(timeInterpolator); // E.g. Linear, Accelerate, Decelerate
anim.start() // Begin the animation
Weitere Informationen zu den Erwartungen finden Sie in den Dokumenten ObjectAnimator.
Sagar
Hier ist die umfassende Liste der Immobiliennamen, nach denen Sie suchen: