View Animation — qu'est-ce que c'est, Tween Animation sous Android

Auteur : IT Sectr Publié le : 2026-03-01 Temps de lecture : 8 min

View Animation est un système d'animation hérité d'Android API 1+ qui fonctionne avec des objets View via Tween Animation (Alpha, Translate, Scale, Rotate). Google recommande Property Animation (Animator) pour tous les nouveaux projets. Cet article explique les principes, les types, le balisage XML et les raisons de son abandon.

Points clés

  • View Animation — anime View via Tween Animation : Alpha, Translate, Scale, Rotate
  • Définition XML — les animations sont décrites dans res/anim/ à l'aide de , , ,
  • AnimationSet — combinaison de plusieurs animations dans un ensemble avec des paramètres partagés
  • Limitation — View Animation ne modifie pas les propriétés, seulement le rendu : le View reste à sa position d'origine
  • Property Animation — remplacement moderne (Animator) qui travaille avec les propriétés réelles des objets

Qu'est-ce que View Animation ?

View Animation est un sous-système d'animation Android qui opère au niveau View (API 1+). Il utilise quatre types de Tween Animation : AlphaAnimation (opacité), TranslateAnimation (déplacement), ScaleAnimation (échelle) et RotateAnimation (rotation). Chaque animation est décrite dans un fichier XML dans le dossier res/anim/ ou créée par programmation en Kotlin.

Le mécanisme View Animation ne modifie pas les propriétés réelles d'un View — il redessine le View dans une nouvelle position, échelle ou opacité, mais le rappel onTouchEvent() reçoit les coordonnées de l'emplacement d'origine. Il s'agit d'une limitation clé connue sous le nom de décalage de clic (click mismatch).

Selon la Documentation Développeur Android (2026), Google a marqué View Animation comme une API obsolète à partir d'Android 3.0 (API 11). Pour les nouveaux projets, Property Animation est recommandée — Animator, AnimatorSet et ObjectAnimator, qui travaillent avec les propriétés réelles des objets via des méthodes setter.

Types de Tween Animation

Tween Animation est une animation « entre » des images clés : vous définissez l'état de début et de fin, et le système calcule les images intermédiaires. Android fournit quatre types standard, chacun avec son propre ensemble de paramètres.

AlphaAnimation

AlphaAnimation modifie l'opacité d'un View de fromAlpha à toAlpha. Les valeurs vont de 0.0 (complètement transparent) à 1.0 (complètement visible). Par défaut, l'animation dure 300 ms. Le paramètre fillAfter=true laisse le View dans l'état d'opacité final.

xml
<!-- res/anim/fade_out.xml -->
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="1.0"
    android:toAlpha="0.0"
    android:duration="500"
    android:fillAfter="true" />

TranslateAnimation

TranslateAnimation déplace un View de la position de départ (fromXDelta, fromYDelta) à la position d'arrivée (toXDelta, toYDelta). Les valeurs sont spécifiées en pixels, en pourcentages du parent ou en pourcentages du View lui-même. Par exemple, 100 % signifie 100 % de la largeur du View.

ScaleAnimation

ScaleAnimation met à l'échelle un View par rapport au point pivotX/pivotY. fromXScale=1.0, toXScale=2.0 double la largeur. Le paramètre pivotType détermine par rapport à quoi le pivot est calculé : self, parent ou absolute. L'animation d'échelle ne modifie pas les dimensions réelles du View — seulement le rendu.

RotateAnimation

RotateAnimation fait pivoter un View autour d'un point pivot d'un angle de fromDegrees à toDegrees. L'angle est mesuré en degrés : 0 est la position d'origine, 360 est une rotation complète. Pour une rotation infinie, utilisez repeatCount=INFINITE.

View Animation vs Property Animation

La différence entre View Animation et Property Animation (Animator) est une distinction fondamentale dans l'architecture d'animation Android. View Animation opère uniquement sur le rendu, tandis que Property Animation modifie les propriétés réelles de l'objet via des méthodes setter, ce qui entraîne des mises à jour de la mise en page.

CritèreView AnimationProperty Animation
Niveau d'APIAPI 1+ (obsolète)API 11+ (recommandé)
Ce qui est animéRendu du View (canvas)Propriétés de l'objet (setter)
Clic après animationÀ la position d'origineÀ la nouvelle position
Types d'animations4 Tween + AnimationSetObjectAnimator, ValueAnimator, AnimatorSet
LayoutParamsNe modifie pasModifie via setLayoutParams
PerformancesÉlevées (canvas uniquement)Moyennes (dépend du setter)

Configuration XML des animations

View Animation est généralement définie dans des fichiers XML dans res/anim/ avec un élément racine (AnimationSet) ou l'un des quatre types. AnimationSet permet de combiner des animations avec des paramètres partagés comme startOffset, duration, interpolator.

xml
<!-- res/anim/bounce.xml -->
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/bounce_interpolator">

    <translate
        android:fromYDelta="0%"
        android:toYDelta="-100%"
        android:duration="600" />

    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.3"
        android:duration="600" />
</set>

Le fichier XML est chargé via AnimationUtils.loadAnimation(). L'Interpolator définit comment le paramètre change dans le temps : accelerate, decelerate, bounce, overshoot. Un Interpolator personnalisé est créé via la ressource XML @anim/interpolator_name.

Attributs communs

Toutes les animations Tween prennent en charge les attributs : duration (ms), startOffset (délai avant le début), repeatCount, repeatMode (restart/reverse), fillEnabled, fillBefore, fillAfter, interpolator. L'attribut fillAfter détermine si le View reste dans l'état final de l'animation après son achèvement.

Exemples de code en Kotlin

Bien que les animations soient généralement définies en XML, elles peuvent également être créées par programmation en utilisant Kotlin. L'approche programmatique est utile pour les paramètres dynamiques : la valeur d'opacité dépend de l'état de l'application plutôt que d'être définie statiquement.

kotlin
// Création programmatique d'AlphaAnimation en Kotlin
import android.view.animation.AlphaAnimation
import android.view.animation.Animation
import android.view.View

fun View.fadeOut(duration: Long = 500L, onEnd: () -> Unit = {}) {
    val animation = AlphaAnimation(1.0f, 0.0f).apply {
        this.duration = duration
        fillAfter = true
        setAnimationListener(object : Animation.AnimationListener {
            override fun onAnimationEnd(animation: Animation?) { onEnd() }
            override fun onAnimationStart(animation: Animation?) {}
            override fun onAnimationRepeat(animation: Animation?) {}
        })
    }
    startAnimation(animation)
}

// Chargement d'une animation depuis XML
val bounceAnim = AnimationUtils.loadAnimation(context, R.anim.bounce)
view.startAnimation(bounceAnim)

// AnimationSet — combinaison d'animations
val set = AnimationSet(true).apply {
    addAnimation(TranslateAnimation(0f, 200f, 0f, 0f).apply { duration = 400 })
    addAnimation(RotateAnimation(0f, 360f).apply {
        duration = 400
        pivotX = view.width / 2f
        pivotY = view.height / 2f
    })
}
view.startAnimation(set)

La méthode startAnimation() ajoute l'animation à la file d'attente de rendu du View. Pour l'annuler, utilisez clearAnimation(). Important : fillAfter=true ne modifie pas LayoutParams — lorsque startAnimation est appelé à nouveau, l'animation commence à partir de l'état d'origine du View, pas du dernier état rendu.

Quand utiliser View Animation ?

View Animation a un champ d'application étroit en 2026 : prise en charge d'Android 4.x (API 16-19) où Property Animation peut fonctionner de manière instable ; effets simples d'apparition/disparition ne nécessitant pas de modifications LayoutParams ; animations où le décalage de clic n'est pas critique (par exemple, éléments d'arrière-plan). Pour tous les autres cas, Google recommande de passer à ObjectAnimator ou AnimatorSet.

Selon Android Developers, Property Animation est 15 à 20 % plus efficace en mémoire car elle ne crée pas d'images canvas intermédiaires. Passer de View Animation à Property Animation élimine également le problème de décalage de clic : le View après l'animation reçoit les touches à sa nouvelle position.

Questions fréquentes

Quelle est la différence entre View Animation et Property Animation ?

View Animation modifie uniquement le rendu du View — après l'animation, le View reste à sa position d'origine pour les événements tactiles. Property Animation modifie les propriétés réelles de l'objet, ce qui met à jour LayoutParams et gère correctement les clics à la nouvelle position.

Pourquoi View Animation est-elle considérée comme obsolète ?

Google a déclaré View Animation obsolète à partir d'Android 3.0 (API 11). La raison est le décalage de clic (click mismatch) et l'incapacité d'animer des propriétés arbitraires d'objets. Property Animation résout ces problèmes et est recommandée pour tous les nouveaux projets.

Peut-on utiliser View Animation pour animer des boutons ?

On peut l'utiliser mais ce n'est pas recommandé. Un bouton après TranslateAnimation apparaîtra à un nouvel emplacement, mais les clics seront enregistrés à la position d'origine. Pour les boutons, utilisez Property Animation ou un composable avec AnimatedVisibility dans Jetpack Compose.

Comment annuler View Animation par programmation ?

Appelez view.clearAnimation(). Si l'animation a été démarrée avec fillAfter=true, le View restera dans son état final. Pour forcer le retour à l'état d'origine, appelez clearAnimation() et invalidate().

Résumé

  • View Animation — un système d'animation Tween hérité sous Android avec quatre types : Alpha, Translate, Scale, Rotate
  • Balisage XML dans res/anim/ avec les éléments , , , et racine
  • AnimationSet combine des animations avec startOffset, duration, interpolator partagés
  • Décalage de clic — le View après animation reste à la position d'origine pour les événements tactiles
  • Property Animation — remplacement moderne via ObjectAnimator, AnimatorSet, travaillant avec des propriétés réelles
  • fillAfter laisse le View dans son état final mais ne modifie pas LayoutParams
  • Migration vers Property Animation élimine le décalage de clic et améliore les performances de 15 à 20 %

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi