Le animazioni possono aggiungere indicatori visivi che informano gli utenti di ciò che sta accadendo nella tua app. Sono particolarmente utili quando l'interfaccia utente cambia stato, ad esempio quando vengono caricati nuovi contenuti o diventano disponibili nuove azioni. Le animazioni conferiscono inoltre un aspetto più curato alla tua app, che ne aumenta la qualità percepita.
Android include diverse API Animation a seconda del tipo di animazione che vuoi. Questa documentazione fornisce una panoramica dei diversi modi in cui puoi aggiungere movimento alla tua UI.
Per capire meglio quando utilizzare le animazioni, consulta anche la guida di Material Design sul movimento.
Anima le bitmap
Figura 1. Una risorsa drawable animata.
Per animare un'immagine bitmap, ad esempio un'icona o un'illustrazione, utilizza le API Drawable Animation. In genere, queste animazioni vengono definite in modo statico con una risorsa drawable, ma puoi anche definire il comportamento dell'animazione in fase di runtime.
Ad esempio, un buon modo per comunicare all'utente che due azioni sono correlate è animare un pulsante di riproduzione che si trasforma in un pulsante di pausa quando viene toccato.
Per saperne di più, consulta Animare la grafica drawable.
Animare la visibilità e il movimento della UI
Figura 2. Un'animazione discreta quando viene visualizzata e scompare una finestra di dialogo rende meno brusca la modifica della UI.
Quando devi modificare la visibilità o la posizione delle visualizzazioni nel layout, è consigliabile includere animazioni discrete per aiutare l'utente a capire come sta cambiando l'interfaccia utente.
Per spostare, mostrare o nascondere le visualizzazioni all'interno del layout corrente, puoi utilizzare il sistema di animazione delle proprietà fornito dal pacchetto android.animation, disponibile in Android 3.0 (livello API 11) e versioni successive. Queste API aggiornano le proprietà degli oggetti View in un periodo di tempo, ridisegnando continuamente la visualizzazione man mano che le proprietà cambiano. Ad esempio, quando modifichi le proprietà della posizione, la visualizzazione si sposta sullo schermo. Quando modifichi la proprietà alpha, la visualizzazione appare o scompare gradualmente.
Il modo più semplice per creare queste animazioni è attivarle nel layout, in modo che quando modifichi la visibilità di una visualizzazione, l'animazione venga applicata automaticamente. Per saperne di più, consulta Animazione automatica degli aggiornamenti del layout.
Per scoprire come creare animazioni utilizzando il sistema di animazione delle proprietà, leggi la panoramica dell'animazione delle proprietà. Puoi anche consultare le seguenti pagine per creare animazioni comuni:
Modifica la visibilità di una visualizzazione con una dissolvenza incrociata.
Modifica la visibilità di una visualizzazione con una rivelazione circolare.
Scambia le visualizzazioni con un capovolgimento della scheda.
Modifica le dimensioni della visualizzazione con un'animazione di zoom.
Movimento basato sulla fisica
Figura 3. Animazione creata con ObjectAnimator.
Figura 4. Animazione creata con API basate sulla fisica.
Quando possibile, applica la fisica del mondo reale alle tue animazioni in modo che abbiano un aspetto naturale. Ad esempio, devono mantenere lo slancio quando il target cambia e garantire transizioni fluide durante qualsiasi modifica.
Per fornire questi comportamenti, la libreria Android Support include API di animazione basate sulla fisica che si basano sulle leggi della fisica per controllare il modo in cui si verificano le animazioni.
Di seguito sono riportate due animazioni comuni basate sulla fisica:
Le animazioni non basate sulla fisica, come quelle create con le API ObjectAnimator, sono abbastanza statiche e hanno una durata fissa. Se il valore target cambia, devi annullare l'animazione al momento della modifica del valore target, riconfigurare l'animazione con un nuovo valore come nuovo valore iniziale e aggiungere il nuovo valore target. Visivamente, questo processo crea un'interruzione brusca nell'animazione e un movimento disgiunto successivo, come mostrato nella Figura 3.
Le animazioni create con le API di animazione basate sulla fisica, come
DynamicAnimation, sono guidate dalla
forza. La modifica del valore target comporta una modifica della forza. La nuova forza viene applicata alla velocità esistente, il che consente una transizione continua al nuovo target. Questo processo genera un'animazione dall'aspetto più naturale, come mostrato nella figura 4.
Anima le modifiche al layout
Figura 5. Un'animazione per mostrare maggiori dettagli può essere ottenuta modificando il layout o avviando una nuova attività.
Su Android 4.4 (livello API 19) e versioni successive, puoi utilizzare il framework di transizione per creare animazioni quando scambi il layout all'interno dell'attività o del frammento corrente. Devi solo specificare il layout iniziale e finale e il tipo di animazione che vuoi utilizzare. Il sistema calcola ed esegue un'animazione tra i due layout. Puoi utilizzarlo per sostituire l'intera UI o per spostare o sostituire solo alcune visualizzazioni.
Ad esempio, quando l'utente tocca un elemento per visualizzare ulteriori informazioni, puoi sostituire il layout con i dettagli dell'elemento, applicando una transizione come quella mostrata nella figura 5.
Il layout iniziale e quello finale sono memorizzati ciascuno in un
Scene, anche se la scena iniziale viene
solitamente determinata automaticamente dal layout corrente. Crea un oggetto Transition per indicare al sistema il tipo di animazione che vuoi, quindi chiama TransitionManager.go() e il sistema esegue l'animazione per scambiare i layout.
Per saperne di più, consulta Anima le modifiche al layout utilizzando una transizione. Per un esempio di codice, consulta BasicTransition.
Animazione tra le attività
Su Android 5.0 (livello API 21) e versioni successive, puoi anche creare animazioni che eseguono la transizione tra le tue attività. Si basa sullo stesso framework di transizione descritto nella sezione precedente, ma consente di creare animazioni tra i layout in attività separate.
Puoi applicare animazioni semplici, come lo scorrimento della nuova attività dal lato o la dissolvenza in entrata, ma puoi anche creare animazioni che eseguono la transizione tra le visualizzazioni condivise in ogni attività. Ad esempio, quando l'utente tocca un elemento per visualizzare maggiori informazioni, puoi passare a una nuova attività con un'animazione che espande l'elemento in modo da riempire lo schermo, come l'animazione mostrata nella figura 5.
Come al solito, chiami
startActivity(),
ma passi un bundle di opzioni fornite da
ActivityOptions.makeSceneTransitionAnimation().
Questo bundle di opzioni potrebbe includere le visualizzazioni condivise tra le attività, in modo che il framework di transizione possa collegarle durante l'animazione.
Per ulteriori risorse, consulta: