View Animation — cos'è, Tween Animation in Android

Autore: IT Sectr Pubblicato: 2026-03-01 Tempo di lettura: 8 min

View Animation è un sistema di animazione legacy di Android API 1+ che lavora con oggetti View attraverso Tween Animation (Alpha, Translate, Scale, Rotate). Google raccomanda Property Animation (Animator) per tutti i nuovi progetti. Questo articolo spiega i principi, i tipi, il markup XML e i motivi dell'abbandono.

Punti Chiave

  • View Animation — anima View attraverso Tween Animation: Alpha, Translate, Scale, Rotate
  • Definizione XML — le animazioni sono descritte in res/anim/ usando , , ,
  • AnimationSet — combinazione di più animazioni in un unico set con parametri condivisi
  • Limitazione — View Animation non modifica le proprietà, solo il rendering: il View rimane nella posizione originale
  • Property Animation — sostituto moderno (Animator) che lavora con proprietà reali degli oggetti

Cos'è View Animation?

View Animation è un sottosistema di animazione Android che opera a livello di View (API 1+). Utilizza quattro tipi di Tween Animation: AlphaAnimation (opacità), TranslateAnimation (movimento), ScaleAnimation (scala) e RotateAnimation (rotazione). Ogni animazione è descritta in un file XML nella cartella res/anim/ o creata programmaticamente in codice Kotlin.

Il meccanismo View Animation non modifica le proprietà reali di un View — ridisegna il View in una nuova posizione, scala o opacità, ma il callback onTouchEvent() riceve le coordinate della posizione originale. Questa è una limitazione chiave nota come disallineamento del clic (click mismatch).

Secondo la Documentazione per Sviluppatori Android (2026), Google ha segnato View Animation come API deprecata a partire da Android 3.0 (API 11). Per i nuovi progetti, si raccomanda Property Animation — Animator, AnimatorSet e ObjectAnimator, che lavorano con proprietà reali degli oggetti attraverso metodi setter.

Tipi di Tween Animation

Tween Animation è l'animazione “tra” fotogrammi chiave: si definiscono lo stato iniziale e finale, e il sistema calcola i fotogrammi intermedi. Android fornisce quattro tipi standard, ciascuno con il proprio insieme di parametri.

AlphaAnimation

AlphaAnimation modifica l'opacità di un View da fromAlpha a toAlpha. I valori vanno da 0.0 (completamente trasparente) a 1.0 (completamente visibile). Per impostazione predefinita, l'animazione dura 300 ms. Il parametro fillAfter=true lascia il View nello stato di opacità finale.

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 sposta un View dalla posizione iniziale (fromXDelta, fromYDelta) alla posizione finale (toXDelta, toYDelta). I valori sono specificati in pixel, percentuali del genitore o percentuali del View stesso. Ad esempio, 100% significa il 100% della larghezza del View.

ScaleAnimation

ScaleAnimation ridimensiona un View rispetto al punto pivotX/pivotY. fromXScale=1.0, toXScale=2.0 raddoppia la larghezza. Il parametro pivotType determina rispetto a cosa viene calcolato il pivot: self, parent o absolute. L'animazione di scala non modifica le dimensioni reali del View — solo il rendering.

RotateAnimation

RotateAnimation ruota un View attorno a un punto pivot di un angolo da fromDegrees a toDegrees. L'angolo è misurato in gradi: 0 è la posizione originale, 360 è una rotazione completa. Per una rotazione infinita, usa repeatCount=INFINITE.

View Animation vs Property Animation

La differenza tra View Animation e Property Animation (Animator) è una distinzione fondamentale nell'architettura di animazione Android. View Animation opera solo sul rendering, mentre Property Animation modifica le proprietà reali dell'oggetto attraverso metodi setter, portando ad aggiornamenti del layout.

CriterioView AnimationProperty Animation
Livello APIAPI 1+ (deprecato)API 11+ (raccomandato)
Cosa animaRendering del View (canvas)Proprietà dell'oggetto (setter)
Clic dopo animazioneAlla posizione originaleAlla nuova posizione
Tipi di animazione4 Tween + AnimationSetObjectAnimator, ValueAnimator, AnimatorSet
LayoutParamsNon modificaModifica tramite setLayoutParams
PrestazioniAlte (solo canvas)Medie (dipende dal setter)

Configurazione XML delle animazioni

View Animation è tipicamente definita in file XML in res/anim/ con un elemento radice (AnimationSet) o uno dei quattro tipi. AnimationSet permette di combinare animazioni con parametri condivisi come 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>

Il file XML viene caricato tramite AnimationUtils.loadAnimation(). L'Interpolator definisce come il parametro cambia nel tempo: accelerate, decelerate, bounce, overshoot. Un Interpolator personalizzato viene creato tramite la risorsa XML @anim/interpolator_name.

Attributi Comuni

Tutte le animazioni Tween supportano gli attributi: duration (ms), startOffset (ritardo prima dell'inizio), repeatCount, repeatMode (restart/reverse), fillEnabled, fillBefore, fillAfter, interpolator. L'attributo fillAfter determina se il View rimane nello stato finale dell'animazione dopo il completamento.

Esempi di codice in Kotlin

Sebbene le animazioni siano solitamente definite in XML, possono anche essere create programmaticamente usando Kotlin. L'approccio programmatico è utile per parametri dinamici: il valore di opacità dipende dallo stato dell'applicazione anziché essere definito staticamente.

kotlin
// Creazione programmatica di AlphaAnimation in 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)
}

// Caricamento di un'animazione da XML
val bounceAnim = AnimationUtils.loadAnimation(context, R.anim.bounce)
view.startAnimation(bounceAnim)

// AnimationSet — combinazione di animazioni
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)

Il metodo startAnimation() aggiunge l'animazione alla coda di rendering del View. Per annullarla, usa clearAnimation(). Importante: fillAfter=true non modifica LayoutParams — quando startAnimation viene chiamato di nuovo, l'animazione inizia dallo stato originale del View, non dall'ultimo stato renderizzato.

Quando usare View Animation?

View Animation ha un ambito di applicazione ristretto nel 2026: supporto per Android 4.x (API 16-19) dove Property Animation può funzionare in modo instabile; effetti semplici di apparizione/scomparsa che non richiedono modifiche a LayoutParams; animazioni dove il disallineamento del clic non è critico (ad esempio, elementi di sfondo). Per tutti gli altri casi, Google raccomanda di passare a ObjectAnimator o AnimatorSet.

Secondo Android Developers, Property Animation è 15-20% più efficiente in memoria perché non crea fotogrammi canvas intermedi. Passare da View Animation a Property Animation elimina anche il problema del disallineamento del clic: il View dopo l'animazione riceve i tocchi nella sua nuova posizione.

Domande Frequenti

In cosa differisce View Animation da Property Animation?

View Animation modifica solo il rendering del View — dopo l'animazione, il View rimane nella sua posizione originale per gli eventi tattili. Property Animation modifica le proprietà effettive dell'oggetto, aggiornando LayoutParams e gestendo correttamente i clic nella nuova posizione.

Perché View Animation è considerata deprecata?

Google ha dichiarato View Animation deprecata a partire da Android 3.0 (API 11). Il motivo è il disallineamento del clic (click mismatch) e l'incapacità di animare proprietà arbitrarie degli oggetti. Property Animation risolve questi problemi ed è raccomandata per tutti i nuovi progetti.

Si può usare View Animation per animare i pulsanti?

Si può usare ma non è raccomandato. Un pulsante dopo TranslateAnimation apparirà in una nuova posizione, ma i clic verranno registrati nella posizione originale. Per i pulsanti, usa Property Animation o un composable con AnimatedVisibility in Jetpack Compose.

Come annullare View Animation programmaticamente?

Chiama view.clearAnimation(). Se l'animazione è stata avviata con fillAfter=true, il View rimarrà nel suo stato finale. Per forzare il ritorno allo stato originale, chiama clearAnimation() e invalidate().

Riepilogo

  • View Animation — un sistema legacy di animazione Tween in Android con quattro tipi: Alpha, Translate, Scale, Rotate
  • Markup XML in res/anim/ con elementi , , , e radice
  • AnimationSet combina animazioni con startOffset, duration, interpolator condivisi
  • Disallineamento del clic — il View dopo l'animazione rimane nella posizione originale per gli eventi tattili
  • Property Animation — sostituto moderno tramite ObjectAnimator, AnimatorSet, lavora con proprietà reali
  • fillAfter lascia il View nello stato finale ma non modifica LayoutParams
  • Migrazione a Property Animation elimina il disallineamento del clic e migliora le prestazioni del 15-20%

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche