Sie können das Ansichtsanimationssystem verwenden, um in Ansichten angepasste Animationen durchzuführen. Animation für ältere Kinder berechnet die Animation mit Informationen wie Startpunkt, Endpunkt, Größe, Drehung weitere gängige Aspekte von Animationen.
Eine Tween-Animation kann eine Reihe einfacher Transformationen (Position, Größe, Drehung,
und Transparenz) für den Inhalt eines View-Objekts. Wenn Sie also ein TextView
-Objekt haben, können Sie den Text verschieben, drehen, vergrößern oder verkleinern. Wenn es eine
Hintergrundbild ändern, wird das Hintergrundbild zusammen mit dem Text angepasst. animation package
stellt alle Klassen bereit, die in einer Tween-Animation verwendet werden.
Eine Abfolge von Animationsanweisungen definiert die Tween-Animation, die entweder durch XML oder
Android-Code. Wie bei der Definition eines Layouts wird eine XML-Datei empfohlen, da sie besser lesbar ist.
wiederverwendbar und anpassbar ist
als die Hartcodierung der Animation. Im folgenden Beispiel verwenden wir XML. (An
Weitere Informationen zum Definieren einer Animation im Anwendungscode anstelle von XML finden Sie in der
AnimationSet
und andere abgeleitete Animation
-Klassen.)
Die Animationsanweisungen definieren die Transformationen, die stattfinden sollen, und wie lange es dauern sollte, bis sie angewendet werden. Transformationen können sequenziell oder gleichzeitig erfolgen Sie können beispielsweise den Inhalt einer TextView von links nach rechts verschieben und dann drehen. um 180 Grad oder Sie können den Text gleichzeitig verschieben und drehen. Jede Transformation dauert ein Gruppe von Parametern für diese Transformation (Startgröße und Endgröße für Größe) Änderung, Start- und Endwinkel für die Drehung usw.) sowie eine Reihe gängiger (z. B. Startzeit und Dauer). Um mehrere Transformationen durchzuführen geben Sie ihnen dieselbe Startzeit. damit sie sequentiell sind, plus die Dauer der vorherigen Transformation.
Die Animations-XML-Datei gehört in das Verzeichnis res/anim/
deines Android-Geräts
Projekt arbeiten. Die Datei muss ein einzelnes Stammelement haben: Dies ist entweder ein einzelnes
<alpha>
, <scale>
, <translate>
<rotate>
, Interpolator- oder <set>
-Element, das
Gruppen dieser Elemente (die eine weitere <set>
enthalten können). Standardmäßig werden alle
Animationsanweisungen werden gleichzeitig angewendet. Damit sie sequenziell auftreten, müssen Sie
und geben Sie das Attribut startOffset
an, wie im folgenden Beispiel gezeigt.
Der folgende XML-Code aus einem der ApiDemos wird verwendet, um das Dehnen und anschließendes Drehen und View-Objekt drehen.
<set android:shareInterpolator="false"> <scale android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fromXScale="1.0" android:toXScale="1.4" android:fromYScale="1.0" android:toYScale="0.6" android:pivotX="50%" android:pivotY="50%" android:fillAfter="false" android:duration="700" /> <set android:interpolator="@android:anim/decelerate_interpolator"> <scale android:fromXScale="1.4" android:toXScale="0.0" android:fromYScale="0.6" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:startOffset="700" android:duration="400" android:fillBefore="false" /> <rotate android:fromDegrees="0" android:toDegrees="-45" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:startOffset="700" android:duration="400" /> </set> </set>
Die Bildschirmkoordinaten, die in diesem Beispiel nicht verwendet werden, stehen oben links (0,0) und wenn Sie nach unten und nach rechts gehen.
Einige Werte, wie z. B. pivotX, können relativ zum Objekt selbst oder relativ zum Parent. Achten Sie darauf, das richtige Format zu verwenden: „50“ für 50% relativ zum übergeordneten Element, oder „50 %“ 50% relativ zu sich selbst).
Durch Zuweisen einer Interpolator
können Sie bestimmen, wie eine Transformation im Laufe der Zeit angewendet wird. Android umfasst mehrere abgeleitete Interpolator-Klassen,
verschiedene Geschwindigkeitskurven angeben, z. B. AccelerateInterpolator
weist darauf hin, dass eine Transformation langsam und
beschleunigen soll. Jedes hat einen Attributwert, der
in der XML-Datei angewendet.
Mit dieser XML-Datei als hyperspace_jump.xml
in res/anim/
gespeichert
des Projekts enthält, verweist der folgende Code darauf und wendet ihn auf ein ImageView
-Objekt aus dem Layout an.
Kotlin
AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump).also { hyperspaceJumpAnimation -> findViewById<ImageView>(R.id.spaceshipImage).startAnimation(hyperspaceJumpAnimation) }
Java
ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage); Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump); spaceshipImage.startAnimation(hyperspaceJumpAnimation);
Als Alternative zu startAnimation()
können Sie eine Startzeit für den
Animation mit
und weisen Sie die Animation dann der Ansicht mit Animation.setStartTime()
zu.View.setAnimation()
Weitere Informationen zur XML-Syntax sowie zu verfügbaren Tags und Attributen finden Sie unter Animationsressourcen.
Hinweis:Unabhängig davon, wie die Animation verschoben oder vergrößert wird, werden die Grenzen der Ansicht, die Ihre Animation enthält, nicht automatisch angepasst. Die Animation wird dennoch außerhalb ihrer Ansicht gezeichnet und nicht abgeschnitten. Es wird jedoch abgeschnitten, wenn die Animation die Grenzen der übergeordneten Ansicht überschreitet.