Ceci est une ancienne révision du document !
Table des matières
Généralités
Fonctionnalités
Interpolation
Liste des interpolations avec leur courbe : Android Animation Interpolators Archive du 2014 le 29/05/2023
Il existe :
AccelerateDecelerateInterpolator
,AccelerateInterpolator
,AnticipateInterpolator
,AnticipateOvershootInterpolator
,BounceInterpolator
,CycleInterpolator
,DecelerateInterpolator
,LinearInterpolator
,OvershootInterpolator
,PathInterpolator
.
Comparaison Animation / Animator
Pour faire des animations, il est possible d'utiliser des classes Animation
et des Animator
.
Différence entre les deux, en mettant en avant Animator
.
+ Plus récent.
+ Composant graphique utilisable pendant l'animation.
+ Permet de synchroniser plusieurs animations sur plusieurs composants graphiques.
+ L'implémentation des listener
se fait sur la base d'une classe abstraite et non d'une interface ce qui évite de devoir définir tous les événements.
+ Permet d'enchainer des animations complexes dans la ressource XML.
- Nécessite plus de ressource.
- Ne permet pas de déplacer d'un pourcentage de la taille du composant depuis la ressource XML. Nécessite Java.
- Nécessite plus de ligne de code.
- Ne peut pas être créé depuis du code Java (sauf animation très simple). Nécessite d'avoir une ressource XML.
- Animation difficilement personnalisable en Java.
Globalement, Animator
est mieux.
What is the difference between an Animator and an Animation? Archive du 29/01/2025 le 29/05/2023
Animation
Ressources
Les ressources XML se mettent dans le dossier res/anim
.
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:interpolator="@android:anim/accelerate_interpolator" > <alpha android:fromAlpha="0" android:toAlpha="1" /> <translate android:fromYDelta="+50%" android:toYDelta="0%" /> </set>
Exemple
Animation animation = AnimationUtils.loadAnimation(context, R.anim.animation); animation.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) {} @Override public void onAnimationEnd(Animation animation) {} @Override public void onAnimationRepeat(Animation animation) {} }); Button button = myView.findViewById(R.id.button); button.startAnimation(buttonIn);