Eine Animationsressource kann einen von zwei Animationstypen definieren:
- Eigenschaftsanimation
- Erstellt eine Animation, indem die Attributwerte eines Objekts über einen bestimmten Zeitraum geändert werden
  mit Animator.
- Animation ansehen
- 
  Mit dem Framework für Animationen können Sie zwei Arten von Animationen ausführen: - Tween-Animation: Erstellt eine Animation durch eine Reihe von Transformationen an einem einzelnen Bild.
    mit einem Animation.
- Frame-Animation: Damit wird eine Animation erstellt, indem eine Reihe von Bildern nacheinander wiedergegeben wird.
    mit einem AnimationDrawable.
 
- Tween-Animation: Erstellt eine Animation durch eine Reihe von Transformationen an einem einzelnen Bild.
    mit einem 
Eigenschaftsanimation
Eine in XML definierte Animation, die die Eigenschaften des Zielobjekts ändert, z. B. Hintergrundfarbe oder Alphawert über einen festgelegten Zeitraum hinweg.
- Dateispeicherort:
- res/animator/filename.xml
 Der Dateiname wird als Ressourcen-ID verwendet.
- Datentyp der kompilierten Ressource:
- Ressourcenzeiger auf ValueAnimator,ObjectAnimator, oderAnimatorSet
- Ressourcenreferenz:
- 
Im Java- oder Kotlin-Code: R.animator.filename
 XML:@[package:]animator/filename
- Syntax:
- 
<set android:ordering=["together" | "sequentially"]> <objectAnimator android:propertyName="string" android:duration="int" android:valueFrom="float | int | color" android:valueTo="float | int | color" android:startOffset="int" android:repeatCount="int" android:repeatMode=["restart" | "reverse"] android:valueType=["intType" | "floatType"]/> <animator android:duration="int" android:valueFrom="float | int | color" android:valueTo="float | int | color" android:startOffset="int" android:repeatCount="int" android:repeatMode=["restart" | "reverse"] android:valueType=["intType" | "floatType"]/> <set> ... </set> </set> Die Datei muss ein einzelnes Stammelement haben: entweder <set>,<objectAnimator>oder<valueAnimator>. Sie können Animationselemente einschließlich anderer Elemente im<set>-Element gruppieren<set>-Elemente.
- Elemente:
- Beispiel:
- 
  XML-Datei gespeichert unter res/animator/property_animator.xml:<set android:ordering="sequentially"> <set> <objectAnimator android:propertyName="x" android:duration="500" android:valueTo="400" android:valueType="intType"/> <objectAnimator android:propertyName="y" android:duration="500" android:valueTo="300" android:valueType="intType"/> </set> <objectAnimator android:propertyName="alpha" android:duration="500" android:valueTo="1f"/> </set> Erhöhen Sie zum Ausführen dieser Animation die XML-Ressourcen in Ihrem Code in ein AnimatorSet-Objekt und legen Sie dann die Zielobjekte für alle Animationen fest. bevor der Animationssatz gestartet wird. Durch den Aufruf vonsetTarget()wird der Einfachheit halber ein einzelnes Zielobjekt für alle untergeordneten Elemente vonAnimatorSetfestgelegt. Der folgende Code zeigt, wie dies funktioniert:Kotlinval set: AnimatorSet = AnimatorInflater.loadAnimator(myContext, R.animator.property_animator) .apply { setTarget(myObject) start() } JavaAnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext, R.animator.property_animator); set.setTarget(myObject); set.start(); 
- Siehe auch:
- 
- Property-Animation – Übersicht
- API-Demos als Beispiele wie Sie das Eigenschaftsanimationssystem
 
Animation ansehen
Das Framework für Ansichtsanimationen unterstützt sowohl Tween- als auch Frame-by-Frame-Animationen, die beide deklariert sind. in XML vorliegen. In den folgenden Abschnitten wird die Verwendung beider Methoden beschrieben.
Animation für ältere Kinder
Eine in XML definierte Animation, die Übergänge in einer Grafik ausführt, z. B. das Drehen, Verblassen, Bewegen und Dehnen.
- Dateispeicherort:
- res/anim/filename.xml
 Der Dateiname wird als Ressourcen-ID verwendet.
- Datentyp der kompilierten Ressource:
- Ressourcenzeiger auf ein Animation
- Ressourcenreferenz:
- 
In Java: R.anim.filename
 XML:@[package:]anim/filename
- Syntax:
- 
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@[package:]anim/interpolator_resource" android:shareInterpolator=["true" | "false"] > <alpha android:fromAlpha="float" android:toAlpha="float" /> <scale android:fromXScale="float" android:toXScale="float" android:fromYScale="float" android:toYScale="float" android:pivotX="float" android:pivotY="float" /> <translate android:fromXDelta="float" android:toXDelta="float" android:fromYDelta="float" android:toYDelta="float" /> <rotate android:fromDegrees="float" android:toDegrees="float" android:pivotX="float" android:pivotY="float" /> <set> ... </set> </set> Die Datei muss ein einzelnes Stammelement haben: entweder ein <alpha>,<scale>,<translate><rotate>- oder<set>-Element, das Eine oder mehrere Gruppen anderer Animationselemente, einschließlich verschachtelter<set>-Elemente.
- Elemente:
- Beispiel:
- 
  XML-Datei gespeichert unter res/anim/hyperspace_jump.xml:<set xmlns:android="http://schemas.android.com/apk/res/android" 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/accelerate_interpolator" android:startOffset="700"> <scale android:fromXScale="1.4" android:toXScale="0.0" android:fromYScale="0.6" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:duration="400" /> <rotate android:fromDegrees="0" android:toDegrees="-45" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:duration="400" /> </set> </set> Mit dem folgenden Anwendungscode wird die Animation auf ein ImageView- und startet die Animation:Kotlinval image: ImageView = findViewById(R.id.image) val hyperspaceJump: Animation = AnimationUtils. loadAnimation(this, R.anim.hyperspace_jump) image.startAnimation(hyperspaceJump)JavaImageView image = (ImageView) findViewById(R.id.image); Animation hyperspaceJump = AnimationUtils. loadAnimation(this, R.anim.hyperspace_jump); image.startAnimation(hyperspaceJump);
- Siehe auch:
Interpolatoren
Ein Interpolator ist ein in XML definierter Animationsmodifikator, der die Änderungsrate in einem Animation. So können Sie Ihre vorhandenen Animationseffekte beschleunigen, verlangsamen, wiederholen abgesprungen usw.
Ein Interpolator wird auf ein Animationselement mit der android:interpolator angewendet.
-Attribut, dessen Wert ein Verweis auf eine Interpolatorressource ist.
Alle in Android verfügbaren Interpolatoren sind Unterklassen der Interpolator-Klasse. Für jede Interpolatorklasse wird Android
enthält eine öffentliche Ressource, auf die Sie verweisen können, um den Interpolator auf eine Animation anzuwenden
mit dem Attribut android:interpolator.
Die folgende Tabelle gibt die Ressource an, die für jeden Interpolator verwendet werden soll:
| Interpolator-Klasse | Ressourcen-ID | 
|---|---|
| AccelerateDecelerateInterpolator | @android:anim/accelerate_decelerate_interpolator | 
| AccelerateInterpolator | @android:anim/accelerate_interpolator | 
| AnticipateInterpolator | @android:anim/anticipate_interpolator | 
| AnticipateOvershootInterpolator | @android:anim/anticipate_overshoot_interpolator | 
| BounceInterpolator | @android:anim/bounce_interpolator | 
| CycleInterpolator | @android:anim/cycle_interpolator | 
| DecelerateInterpolator | @android:anim/decelerate_interpolator | 
| LinearInterpolator | @android:anim/linear_interpolator | 
| OvershootInterpolator | @android:anim/overshoot_interpolator | 
So wenden Sie eine dieser Optionen mit dem Attribut android:interpolator an:
<set android:interpolator="@android:anim/accelerate_interpolator"> ... </set>
Benutzerdefinierte Interpolatoren
Wenn Sie mit den von der Plattform bereitgestellten Interpolatoren nicht zufrieden sind, können Sie eine benutzerdefinierte Interpolatorressource mit geänderten Attributen erstellen.
Beispielsweise können Sie die Rate der
Beschleunigung für AnticipateInterpolator oder passen Sie die Anzahl der
Zyklen für CycleInterpolator. Dazu müssen Sie
Erstellen Sie Ihre eigene Interpolator-Ressource in einer XML-Datei.
- Dateispeicherort:
- res/anim/filename.xml
 Der Dateiname wird als Ressourcen-ID verwendet.
- Datentyp der kompilierten Ressource:
- Ressourcenzeiger auf das entsprechende Interpolatorobjekt
- Ressourcenreferenz:
- 
XML: @[package:]anim/filename
- Syntax:
- 
<?xml version="1.0" encoding="utf-8"?> <InterpolatorName xmlns:android="http://schemas.android.com/apk/res/android" android:attribute_name="value" /> Wenn Sie keine Attribute anwenden, funktioniert der Interpolator genau wie die von der Plattform bereitgestellt werden (siehe Tabelle oben). 
- Elemente:
- Beachten Sie, dass jede Interpolator-Implementierung, der in XML definiert ist, einen Namen hat, der mit einem Kleinbuchstaben beginnt.
- Beispiel:
- 
  XML-Datei gespeichert unter res/anim/my_overshoot_interpolator.xml:<?xml version="1.0" encoding="utf-8"?> <overshootInterpolator xmlns:android="http://schemas.android.com/apk/res/android" android:tension="7.0" /> Diese Animations-XML wendet den Interpolator an: <scale xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@anim/my_overshoot_interpolator" android:fromXScale="1.0" android:toXScale="3.0" android:fromYScale="1.0" android:toYScale="3.0" android:pivotX="50%" android:pivotY="50%" android:duration="700" /> 
Frame animation
Eine in XML definierte Animation, die wie ein Film eine Folge von Bildern zeigt.
- Dateispeicherort:
- res/drawable/filename.xml
 Der Dateiname wird als Ressourcen-ID verwendet.
- Datentyp der kompilierten Ressource:
- Ressourcenzeiger auf ein AnimationDrawable
- Ressourcenreferenz:
- 
In Java: R.drawable.filename
 XML:@[package:]drawable.filename
- Syntax:
- 
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot=["true" | "false"] > <item android:drawable="@[package:]drawable/drawable_resource_name" android:duration="integer" /> </animation-list> 
- Elemente:
- Beispiel:
- 
  XML-Datei gespeichert unter res/drawable/rocket_thrust.xml:<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/rocket_thrust1" android:duration="200" /> <item android:drawable="@drawable/rocket_thrust2" android:duration="200" /> <item android:drawable="@drawable/rocket_thrust3" android:duration="200" /> </animation-list> Mit dem folgenden Anwendungscode wird die Animation als Hintergrund für ein Viewfestgelegt, und dann die Animation abspielen:Kotlinval rocketImage: ImageView = findViewById(R.id.rocket_image) rocketImage. setBackgroundResource(R.drawable.rocket_thrust) val rocketAnimation = rocketImage.backgroundif (rocketAnimation isAnimatable) { rocketAnimation.start()}JavaImageView rocketImage = (ImageView) findViewById(R.id.rocket_image); rocketImage. setBackgroundResource(R.drawable.rocket_thrust); rocketAnimation = rocketImage.getBackground(); if (rocketAnimation instanceofAnimatable) { ((Animatable)rocketAnimation).start(); }
- Siehe auch:
