Introduzione alle animazioni

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

Le animazioni possono aggiungere indicatori visivi che avvisano gli utenti su 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 aggiungono anche un aspetto professionale alla tua app, che ne migliora l'aspetto e la qualità.

Android include API di animazione diverse a seconda del tipo di animazione che vuoi. Questa documentazione fornisce una panoramica dei diversi modi in cui puoi aggiungere movimento all'interfaccia utente.

Per capire meglio quando utilizzare le animazioni, consulta anche la guida di Material Design sul movimento.

Animare i bitmap

Figura 1. Un drawable animato.

Per animare un'immagine bitmap, ad esempio un'icona o un'illustrazione, utilizza le API di animazione drawable. In genere, queste animazioni sono definite in modo statico con una risorsa drawable, ma puoi anche definire il comportamento dell'animazione in fase di esecuzione.

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 ulteriori informazioni, consulta Animare le immagini scomponibili.

Animare la visibilità e il movimento dell'interfaccia utente

Figura 2. Un'animazione delicata quando una finestra di dialogo appare e scompare rende la modifica dell'interfaccia utente meno spiacevole.

Quando devi modificare la visibilità o la posizione delle visualizzazioni nel layout, è meglio includere animazioni sottili 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 determinato periodo di tempo, ridisegnando continuamente la vista man mano che le proprietà cambiano. Ad esempio, quando modifichi le proprietà di posizione, la visualizzazione si sposta sullo schermo. Quando modifichi la proprietà alpha, la visualizzazione si attenua o si espande.

Per creare queste animazioni nel modo più semplice, attivale nel 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à, consulta la Panoramica dell'animazione delle proprietà. Puoi anche consultare 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 della fisica del mondo reale alle animazioni in modo che abbiano un aspetto naturale. Ad esempio, devono mantenere il momentum quando il loro obiettivo cambia e devono effettuare transizioni fluide durante le eventuali modifiche.

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.

Ecco due animazioni basate sulla fisica comuni:

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, riconfigurarla con un nuovo valore come nuovo valore iniziale e aggiungere il nuovo valore target. Visivamente, questa procedura crea un'interruzione brusca nell'animazione e un movimento sconnesso successivamente, come mostrato nella figura 3.

Le animazioni create con API di animazione basate sulla fisica, come DynamicAnimation, sono basate su forze. La variazione del valore target comporta una variazione dell'efficacia. La nuova forza viene applicata alla velocità esistente, che effettua una transizione continua al nuovo target. Questo processo produce un'animazione dall'aspetto più naturale, come mostrato nella figura 4.

Animare le modifiche al layout

Figura 5. Puoi visualizzare un'animazione per mostrare ulteriori dettagli cambiando 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 individua ed esegue un'animazione tra i due layout. Puoi utilizzarlo per sostituire l'intera interfaccia utente 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 è solitamente determinata automaticamente dal layout corrente. Creando un Transition, comunichi al sistema il tipo di animazione che vuoi, quindi chiami TransitionManager.go() e il sistema esegue l'animazione per scambiare i layout.

Per ulteriori informazioni, leggi Animare le modifiche al layout utilizzando una transizione. Per un esempio di codice, consulta Transizione di base .

Animare il passaggio da un'attività all'altra

Su Android 5.0 (livello API 21) e versioni successive, puoi anche creare animazioni che fanno la transizione tra le tue attività. Si basa sullo stesso framework di transizione descritto nella sezione precedente, ma consente di creare animazioni tra layout in attività separate.

Puoi applicare animazioni semplici, ad esempio far scorrere la nuova attività dal lato o attenuarla, ma puoi anche creare animazioni che passino da una visualizzazione condivisa all'altra in ogni attività. Ad esempio, quando l'utente tocca un elemento per visualizzare altre informazioni, puoi passare a una nuova attività con un'animazione che lo ingrandisce gradualmente fino a riempire lo schermo, come l'animazione mostrata nella figura 5.

Come al solito, chiami startActivity(), ma le passi un insieme di opzioni fornite da ActivityOptions.makeSceneTransitionAnimation(). Questo insieme di opzioni potrebbe includere le viste condivise tra le attività in modo che il framework di transizione possa collegarle durante l'animazione.

Per altre risorse, consulta: