Introduzione alle animazioni

Prova la modalità Scrivi
Jetpack Compose è il toolkit dell'interfaccia utente consigliato per Android. Scopri come utilizzare le animazioni in Compose.

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

Figura 1. Disegnabile animato.

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

Figura 2. Un'animazione discreto quando una finestra di dialogo scompare e appare meno sgradevole.

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:

Movimento basato sulla fisica

Figura 3. Animazione creata con ObjectAnimator.

Figura 4. Animazione creata con API basate 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

Figura 5. Modifica il layout o avvia una nuova attività per creare un'animazione per mostrare maggiori dettagli.

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: