Le animazioni possono aggiungere indizi visivi che informano gli utenti su ciò che sta succedendo nella tua app. Sono particolarmente utili quando la UI cambia stato, ad esempio quando vengono caricati nuovi contenuti o diventano disponibili nuove azioni. Le animazioni conferiscono anche un aspetto elegante alla tua app, che le conferisce un aspetto e un'esperienza di qualità superiore.
Android include diverse API di animazione 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 Material Design guide sul movimento.
Animare le bitmap
Figura 1. Un drawable animato.
Per animare una grafica bitmap come un'icona o un'illustrazione, utilizza le API di animazione drawable. In genere, queste animazioni vengono definite staticamente con una risorsa drawable, ma puoi anche definire il comportamento dell'animazione in fase di runtime.
Ad esempio, un modo efficace 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ù, leggi 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 brusco il cambio 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 la UI.
Per spostare, mostrare o nascondere le visualizzazioni all'interno del layout corrente, puoi utilizzare il
sistema di animazione delle proprietà fornito dal android.animation pacchetto, disponibile in Android 3.0
(livello API 11) e versioni successive. Queste API aggiornano le proprietà degli oggetti View per 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à alfa, la visualizzazione viene visualizzata o scompare.
Per il modo più semplice per creare queste animazioni, attiva le animazioni sul tuo layout in modo che, quando modifichi la visibilità di una visualizzazione, venga applicata automaticamente un'animazione. Per saperne di più, consulta Animare automaticamente gli aggiornamenti del layout.
Per scoprire come creare animazioni utilizzando il sistema di animazione delle proprietà, leggi la panoramica sull'animazione delle proprietà. Puoi anche consultare le seguenti pagine per creare animazioni comuni:
Modificare la visibilità di una visualizzazione con una dissolvenza incrociata.
Modificare la visibilità di una visualizzazione con una rivelazione circolare.
Scambiare le visualizzazioni con un'animazione di rotazione della scheda.
Modificare 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 animazioni in modo che abbiano un aspetto naturale. Ad esempio, devono mantenere lo slancio quando il target cambia ed effettuare transizioni fluide durante le modifiche.
Per fornire questi comportamenti, la libreria di supporto Android include API di animazione basate sulla fisica che si basano sulle leggi della fisica per controllare la modalità di esecuzione delle 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, questa procedura
crea un arresto improvviso dell'animazione e un movimento disgiunto in seguito,
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 si applica alla velocità esistente, il che consente una transizione continua a
il nuovo target. Questa procedura produce un'animazione dall'aspetto più naturale, come
mostrato nella Figura 4.
Animare le modifiche del 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 fragment corrente. Tutto ciò che devi fare è specificare il layout iniziale e finale e il tipo di animazione che vuoi utilizzare. Il sistema individua ed esegue un animazione tra i due layout. Puoi utilizzare questa funzionalità per sostituire l'intera UI o per spostare o sostituire solo alcune visualizzazioni.
Ad esempio, quando l'utente tocca un elemento per visualizzare maggiori informazioni, puoi sostituire il layout con i dettagli dell'elemento, applicando una transizione come quella mostrata nella Figura 5.
Il layout iniziale e finale sono memorizzati in un
Scene, anche se la scena iniziale viene
in genere determinata automaticamente dal layout corrente. Crea un
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ù, leggi Animare le modifiche del layout utilizzando una transizione. Per un esempio di codice, consulta BasicTransition .
Animare le transizioni tra le attività
Su Android 5.0 (livello API 21) e versioni successive, puoi anche creare animazioni che eseguono la transizione tra le attività. Si basa sullo stesso framework di transizione descritto nella sezione precedente, ma ti consente di creare animazioni tra i layout in attività separate.
Puoi applicare animazioni semplici come far scorrere la nuova attività dal lato o farla apparire, 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 senza interruzioni l'elemento per riempire lo schermo, come l'animazione mostrata nella Figura 5.
Come di consueto, chiama
startActivity(),
ma passagli un pacchetto di opzioni fornito da
ActivityOptions.makeSceneTransitionAnimation().
Questo pacchetto di opzioni potrebbe includere le visualizzazioni condivise tra le
attività in modo che il framework di transizione possa collegarle durante l'animazione.
Per altre risorse, consulta: