Eine Animationsressource kann eine von zwei Arten von Animationen definieren:
- Property-Animation
- Zum Erstellen einer Animation, indem die Eigenschaftswerte eines Objekts über einen festgelegten Zeitraum mit einem
Animator
geändert werden. - Animation ansehen
-
Mit dem Framework für die Animation können Sie zwei Arten von Animationen erstellen:
- Tween-Animation: Erstellt eine Animation, indem für ein einzelnes Bild eine Reihe von Transformationen mit einer
Animation
ausgeführt wird. - Frame-Animation: Es wird eine Animation erstellt, indem eine Abfolge von Bildern in der richtigen Reihenfolge mit einer
AnimationDrawable
angezeigt wird.
- Tween-Animation: Erstellt eine Animation, indem für ein einzelnes Bild eine Reihe von Transformationen mit einer
Property-Animation
Eine in XML definierte Animation, bei der Eigenschaften des Zielobjekts wie Hintergrundfarbe oder Alphawert über einen festgelegten Zeitraum geändert werden.
- Dateispeicherort:
res/animator/filename.xml
Der Dateiname wird als Ressourcen-ID verwendet.- kompilierter Ressourcentyp:
- Ressourcenverweis auf
ValueAnimator
,ObjectAnimator
oderAnimatorSet
- Ressourcenreferenz:
-
In Java- oder Kotlin-Code:
R.animator.filename
In 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 innerhalb des<set>
-Elements gruppieren, einschließlich anderer<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>
Infließen Sie zum Ausführen dieser Animation die XML-Ressourcen in Ihrem Code auf ein
AnimatorSet
-Objekt und legen Sie dann die Zielobjekte für alle Animationen fest, bevor Sie die Animation starten. Durch das Aufrufen vonsetTarget()
wird der Einfachheit halber ein einzelnes Zielobjekt für alle untergeordneten Elemente desAnimatorSet
-Elements festgelegt. Der folgende Code zeigt, wie das funktioniert:Kotlin
val set: AnimatorSet = AnimatorInflater.loadAnimator(myContext, R.animator.property_animator) .apply { setTarget(myObject) start() }
Java
AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext, R.animator.property_animator); set.setTarget(myObject); set.start();
- Siehe auch:
-
- Eigenschaftenanimation – Übersicht
- API-Demos mit Beispielen für die Verwendung des Property-Animationssystems
Animation ansehen
Das Framework für Ansichtsanimationen unterstützt sowohl Tween- als auch Frame-für-Frame-Animationen, die beide in XML deklariert sind. In den folgenden Abschnitten wird die Verwendung dieser beiden Methoden beschrieben.
Animation für ältere Kinder
Eine in XML definierte Animation, die Übergänge in einer Grafik ausführt, z. B. Drehen, Ausblenden, Verschieben und Strecken.
- Dateispeicherort:
res/anim/filename.xml
Der Dateiname wird als Ressourcen-ID verwendet.- kompilierter Ressourcentyp:
- Ressourcenverweis auf eine
Animation
- Ressourcenreferenz:
-
In Java:
R.anim.filename
In 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 andere Animationselemente (einschließlich verschachtelter<set>
-Elemente) enthält. - 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
angewendet und die Animation gestartet:Kotlin
val image: ImageView = findViewById(R.id.image) val hyperspaceJump: Animation = AnimationUtils.
loadAnimation
(this, R.anim.hyperspace_jump) image.startAnimation
(hyperspaceJump)Java
ImageView 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 einer Animation beeinflusst. Dadurch können Ihre vorhandenen Animationseffekte beschleunigt, verzögert, wiederholt, abgesprungen usw. werden.
Ein Interpolator wird mit dem Attribut android:interpolator
auf ein Animationselement angewendet, dessen Wert ein Verweis auf eine Interpolatorressource ist.
Alle in Android verfügbaren Interpolatoren sind Unterklassen der Interpolator
-Klasse. Für jede Interpolatorklasse enthält Android eine öffentliche Ressource, auf die Sie verweisen können, um den Interpolator mithilfe des Attributs android:interpolator
auf eine Animation anzuwenden.
In der folgenden Tabelle ist die Ressource angegeben, die für jeden Interpolator verwendet werden soll:
Interpolatorklasse | 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.
Sie können beispielsweise die Beschleunigungsrate für AnticipateInterpolator
oder die Anzahl der Zyklen für CycleInterpolator
anpassen. Dazu erstellen Sie Ihre eigene Interpolator-Ressource in einer XML-Datei.
- Dateispeicherort:
res/anim/filename.xml
Der Dateiname wird als Ressourcen-ID verwendet.- kompilierter Ressourcentyp:
- Ressourcenzeiger auf das entsprechende Interpolatorobjekt
- Ressourcenreferenz:
-
Im XML-Format:
@[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 so, wie er von der Plattform bereitgestellt wird (siehe Tabelle oben).
- Elemente:
- Beachten Sie, dass jede
Interpolator
-Implementierung, wenn sie 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" />
In dieser Animations-XML wird der Interpolator angewendet:
<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 Abfolge von Bildern zeigt.
- Dateispeicherort:
res/drawable/filename.xml
Der Dateiname wird als Ressourcen-ID verwendet.- kompilierter Ressourcentyp:
- Ressourcenverweis auf eine
AnimationDrawable
- Ressourcenreferenz:
-
In Java:
R.drawable.filename
In 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
View
festgelegt. Anschließend wird die Animation wiedergegeben:Kotlin
val rocketImage: ImageView = findViewById(R.id.rocket_image) rocketImage.
setBackgroundResource
(R.drawable.rocket_thrust) val rocketAnimation = rocketImage.background
if (rocketAnimation isAnimatable
) { rocketAnimation.start()
}Java
ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image); rocketImage.
setBackgroundResource
(R.drawable.rocket_thrust); rocketAnimation = rocketImage.getBackground()
; if (rocketAnimation instanceofAnimatable
) { ((Animatable)rocketAnimation).start()
; } - Siehe auch: