Le animazioni possono aggiungere indicatori visivi che segnalano agli utenti cosa sta succedendo 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 all'app un aspetto elegante che conferisce all'app un aspetto e uno stile di qualità superiore.
Android include diverse API di animazione a seconda del tipo di animazione desiderato. Questa documentazione fornisce una panoramica dei diversi modi per aggiungere movimento alla UI.
Per capire meglio quando utilizzare le animazioni, consulta anche la guida di Material Design sul movimento.
Aggiungere animazioni a bitmap
Per animare un'immagine bitmap, ad esempio un'icona o un'illustrazione, utilizza le API di disegno disponibili per l'animazione. Di solito, queste animazioni sono definite in modo statico con una risorsa disegnabile, ma puoi anche definire il comportamento dell'animazione in fase di runtime.
Ad esempio, un modo utile per comunicare all'utente che due azioni sono correlate è animare un pulsante di riproduzione che, una volta toccato, si trasforma in un pulsante di pausa.
Per ulteriori informazioni, leggi Animare elementi grafici disegnabili.
Animazione sulla visibilità e sul movimento dell'UI
Quando devi modificare la visibilità o la posizione delle visualizzazioni nel layout, ti consigliamo di includere animazioni discrete per consentire all'utente di 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 della proprietà fornito dal pacchetto android.animation
, disponibile su Android 3.0
(livello API 11) e versioni successive. Queste API aggiornano le proprietà degli oggetti View
in un determinato periodo di tempo, ritracciando continuamente la vista man mano che le proprietà cambiano. Ad esempio, se modifichi le proprietà
di posizione, la visualizzazione si sposta sullo schermo. Quando modifichi la proprietà alfa, la vista viene dissolvenza in entrata o in uscita.
Per creare queste animazioni nel modo più semplice, abilita le animazioni nel layout in modo che, quando modifichi la visibilità di una visualizzazione, venga applicata automaticamente un'animazione. Per ulteriori informazioni, consulta Animazione automatica degli aggiornamenti del layout.
Per informazioni su come creare animazioni con il sistema di animazione delle proprietà, consulta la Panoramica dell'animazione della proprietà. Puoi anche vedere le seguenti pagine per creare animazioni comuni:
Modificare la visibilità di una visualizzazione con una dissolvenza incrociata.
Modificare la visibilità di una vista con una visualizzazione circolare.
Modificare le dimensioni di visualizzazione con un'animazione con zoom.
Movimento basato sulla fisica
Quando possibile, applica le leggi fisiche del mondo reale alle animazioni in modo che abbiano aspetto naturale. Ad esempio, devono mantenere lo slancio quando cambiano gli obiettivi e realizzare 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 le modalità di esecuzione delle animazioni.
Due comuni animazioni basate sulla fisica sono le seguenti:
Le animazioni non basate sulla fisica, come quelle create con le API di ObjectAnimator
, sono piuttosto 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. A livello visivo, questo processo crea un'interruzione brusca nell'animazione e successivamente un movimento disordinato, 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. La nuova forza si applica sulla velocità esistente, il che rende una transizione continua verso il nuovo target. Questo processo produce un'animazione dall'aspetto più naturale, come mostrato nella Figura 4.
Animazione delle modifiche al layout
In Android 4.4 (livello API 19) e versioni successive, puoi utilizzare il framework di transizione per creare animazioni quando cambi il layout all'interno dell'attività o del frammento correnti. Devi solo specificare il layout iniziale e finale e il tipo di animazione che vuoi utilizzare. In seguito, il sistema individua ed esegue un'animazione tra i due layout. Potete usare questa funzione per sostituire l'intera UI o per spostare o sostituire solo alcune viste.
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 vengono entrambi archiviati in una Scene
, anche se la scena iniziale di solito viene determinata automaticamente dal layout corrente. Crea un elemento
Transition
per indicare al sistema il
tipo di animazione desiderato, quindi chiama
TransitionManager.go()
e il sistema esegue l'animazione per scambiare i layout.
Per ulteriori informazioni, leggi Animare modifiche al layout utilizzando una transizione. Per un codice di esempio, consulta BasicTransizione .
Animazione tra le attività
Su Android 5.0 (livello API 21) e versioni successive, puoi anche creare animazioni per la transizione da un'attività all'altra. Questa 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, ad esempio far scorrere la nuova attività di lato o dissolverla, ma puoi anche creare animazioni per passare da una visualizzazione condivisa a un'altra in ogni attività. Ad esempio, quando l'utente tocca un elemento per visualizzare ulteriori informazioni, puoi passare a una nuova attività con un'animazione che ingrandisca senza interruzioni l'elemento fino a riempire lo schermo, come l'animazione mostrata nella Figura 5.
Come di consueto, chiami
startActivity()
,
ma passi un gruppo di opzioni fornite da
ActivityOptions.makeSceneTransitionAnimation()
.
Questo pacchetto di opzioni potrebbe includere le viste condivise tra le attività in modo che il framework di transizione possa collegarle durante l'animazione.
Per risorse aggiuntive, consulta: