Une ressource d'animation peut définir l'un des deux types d'animations suivants :
- Animation des propriétés
- Crée une animation en modifiant les valeurs des propriétés d'un objet sur une période donnée à l'aide d'un élément
Animator
. - Animation des vues
-
Le framework d'animation des vues vous permet d'effectuer deux types d'animations :
- Animation d'interpolation : crée une animation en effectuant une série de transformations sur une seule image à l'aide d'un
Animation
. - Animation frame par frame : permet de créer une animation en montrant une séquence d'images dans l'ordre avec un élément
AnimationDrawable
.
- Animation d'interpolation : crée une animation en effectuant une série de transformations sur une seule image à l'aide d'un
Animation des propriétés
Animation définie en XML qui modifie les propriétés de l'objet cible, telles que la couleur d'arrière-plan ou la valeur alpha, sur une période donnée.
- Emplacement du fichier :
res/animator/filename.xml
Le nom de fichier est utilisé comme ID de ressource.- Type de données de la ressource compilée :
- Pointeur de ressource vers
ValueAnimator
,ObjectAnimator
ouAnimatorSet
. - Référence de la ressource :
-
En code Java ou Kotlin :
R.animator.filename
En XML :@[package:]animator/filename
- Syntaxe :
-
<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>
Le fichier doit comporter un seul élément racine :
<set>
,<objectAnimator>
ou<valueAnimator>
. Vous pouvez regrouper des éléments d'animation dans l'élément<set>
, y compris d'autres éléments<set>
. - Éléments :
- Exemple :
-
Fichier XML enregistré sous
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>
Pour exécuter cette animation, gonflez les ressources XML dans le code en un objet
AnimatorSet
, puis définissez les objets cibles de toutes les animations avant de démarrer l'ensemble d'animation. Pour simplifier les choses, l'appel desetTarget()
spécifie un objet cible unique pour tous les enfants deAnimatorSet
. Pour ce faire, entrez le code suivant :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();
- Voir aussi :
-
- Présentation de l'animation des propriétés
- Démonstrations d'API : exemples d'utilisation du système d'animation des propriétés
Animation des vues
Le framework d'animation des vues est compatible avec les animations d'interpolation et "frame par frame", qui peuvent être déclarées au format XML. Les sections suivantes décrivent comment utiliser ces deux méthodes.
Animation d'interpolation
Animation définie en XML qui effectue des transitions sur un graphique (rotation, fondu, déplacement et étirement, par exemple).
- Emplacement du fichier :
res/anim/filename.xml
Le nom de fichier est utilisé comme ID de ressource.- Type de données de la ressource compilée :
- Pointeur de ressource vers
Animation
. - Référence de la ressource :
-
En Java :
R.anim.filename
En XML :@[package:]anim/filename
- Syntaxe :
-
<?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>
Le fichier doit comporter un seul élément racine : un élément
<alpha>
,<scale>
,<translate>
,<rotate>
ou<set>
qui contient un groupe (ou des groupes) d'autres éléments d'animation (y compris des éléments<set>
imbriqués). - Éléments :
- Exemple :
-
Fichier XML enregistré sous
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>
Le code d'application suivant applique l'animation à un élément
ImageView
et la lance :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); - Voir aussi :
Interpolateurs
Un interpolateur est un modificateur d'animation défini en XML qui affecte la fréquence de changement d'une animation. Les effets de vos animations existantes peuvent ainsi être accélérés, ralentis, répétés, à rebonds, etc.
Un interpolateur est appliqué à un élément d'animation avec l'attribut android:interpolator
, dont la valeur est une référence à une ressource d'interpolateur.
Tous les interpolateurs disponibles dans Android sont des sous-classes de la classe Interpolator
. Pour chaque classe d'interpolateur, Android inclut une ressource publique à laquelle vous pouvez renvoyer afin d'appliquer l'interpolateur à une animation à l'aide de l'attribut android:interpolator
.
Le tableau suivant indique la ressource à utiliser pour chaque interpolateur :
Classe d'interpolateur | ID de ressource |
---|---|
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 |
Pour appliquer l'un de ces interpolateurs avec l'attribut android:interpolator
, procédez comme suit :
<set android:interpolator="@android:anim/accelerate_interpolator"> ... </set>
Interpolateurs personnalisés
Si vous n'êtes pas satisfait des interpolateurs fournis par la plate-forme, vous pouvez créer une ressource d'interpolateur personnalisée avec des attributs modifiés.
Par exemple, vous pouvez ajuster le taux d'accélération pour AnticipateInterpolator
ou le nombre de cycles pour CycleInterpolator
. Pour ce faire, créez votre propre ressource d'interpolateur dans un fichier XML.
- Emplacement du fichier :
res/anim/filename.xml
Le nom de fichier est utilisé comme ID de ressource.- Type de données de la ressource compilée :
- Pointeur de ressource vers l'objet interpolateur correspondant.
- Référence de la ressource :
-
En XML :
@[package:]anim/filename
- Syntaxe :
-
<?xml version="1.0" encoding="utf-8"?> <InterpolatorName xmlns:android="http://schemas.android.com/apk/res/android" android:attribute_name="value" />
Si vous n'appliquez aucun attribut, votre interpolateur fonctionnera exactement comme ceux fournis par la plate-forme, comme indiqué dans le tableau précédent.
- Éléments :
- Notez que chaque implémentation d'
Interpolator
, lorsqu'elle est définie en XML, porte un nom commençant par une lettre minuscule. - Exemple :
-
Fichier XML enregistré sous
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" />
Ce fichier XML d'animation applique l'interpolateur :
<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" />
Animation frame par frame
Animation définie en XML qui présente une séquence d'images (comme un film) dans l'ordre.
- Emplacement du fichier :
res/drawable/filename.xml
Le nom de fichier est utilisé comme ID de ressource.- Type de données de la ressource compilée :
- Pointeur de ressource vers
AnimationDrawable
. - Référence de la ressource :
-
En Java :
R.drawable.filename
En XML :@[package:]drawable.filename
- Syntaxe :
-
<?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>
- Éléments :
- Exemple :
-
Fichier XML enregistré sous
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>
Le code d'application suivant définit l'animation en arrière-plan pour un élément
View
, puis la lance :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()
; } - Voir aussi :