AndroidProgrammazione

Animation resources

Una risorsa di animazione può definire uno dei due tipi di animazioni:

  • Property – crea un’animazione modificando i valori delle proprietà di un oggetto in un determinato periodo di tempo, usa la classe Animator;

  • View – esistono due tipi di animazioni che è possibile eseguire usa la classe Animation Framework:

    • Tween – crea un’animazione eseguendo una serie di trasformazioni su una singola immagine usa la classe Animation;

    • Frame – crea un’animazione mostrando una sequenza di immagini in ordine usa la classe AnimationDrawable;

Property

Un’animazione definita in XML che modifica le proprietà dell’oggetto di destinazione, come il colore di sfondo o il valore alfa, in un determinato intervallo di tempo. Salvate in res/animation/filename.xml, Il nome file verrà utilizzato come risorsa ID.

elementi:

  • <set> – un contenitore che contiene altri elementi di animazione, rappresenta un AnimatorSet. È possibile specificare tag <set> nidificati per raggruppare ulteriormente le animazioni. Ogni <set> può definire il proprio attributo di ordinamento, attributi:

    • android:ordering – specifica l’ordine di riproduzione delle animazioni in questo set;

  • <objectAnimator> – animazione di una proprietà specifica di un oggetto in un intervallo di tempo specifico, attributi:

    • android:propertyName – (String, necessario) la proprietà dell’oggetto da animare, a cui fa riferimento il nome;

    • android:valueTo – (float, int o colore, necessario) il valore in cui termina la proprietà animata. I colori sono rappresentati come numeri esadecimali a sei cifre;

    • android: valueFrom – (float, int o colore) il valore in cui inizia la proprietà animata. Se non specificato, l’animazione inizia dal valore ottenuto dal metodo get della proprietà. I colori sono rappresentati come numeri esadecimali a sei cifre;

    • android:duration – (int) il tempo in millisecondi dell’animazione. 300 millisecondi sono l’impostazione predefinita;

    • android:startOffset – (int) la quantità di millisecondi di ritardo dopo start();

    • android:repeatCount – (int) quante volte ripetere un’animazione. Impostare su “-1” per ripetere infinitamente o su un numero intero positivo. Il valore predefinito è “0”, il che significa nessuna ripetizione;

    • android: repeatMode – (int) come si comporta un’animazione quando raggiunge la fine dell’animazione. Impostare su “reverse” per avere l’animazione in senso inverso con ogni iterazione o “repeat” per avere il loop dell’animazione dall’inizio ogni volta;

    • android:valueType – (keyword) non specificare questo attributo se il valore è un colore. Il framework di animazione gestisce automaticamente i valori dei colori;

Visualizza animazione

Il framework di animazione della vista supporta sia l’interpolazione che le animazioni fotogramma per fotogramma, che possono essere entrambe dichiarate in XML. Le seguenti sezioni descrivono come utilizzare entrambi i metodi.

Animazione Tween

Un’animazione definita in XML che esegue transizioni come rotazione, dissolvenza, spostamento e allungamento su un grafico.

posizione del file: res/anim/filename.xml il nome file verrà utilizzato come ID risorsa.

tipo di risorsa compilato: puntatore di risorse a un’animazione.

elementi:

  • <set> – un contenitore che contiene altri elementi di animazione (<alpha>, <scale>, <translate>, <rotate>) o altri elementi <set>. Rappresenta un set di animazioni. attributi:

    • android:interpolator – un interpolatore da applicare all’animazione. Il valore deve essere un riferimento a una risorsa che specifica un interpolatore;

    • android:shareInterpolator – (Boolean) “true” se si desidera condividere lo stesso interpolatore tra tutti gli elementi figlio;

  • <alpha> – un’animazione fade-in o fade-out. Attributi:

    • android:fromAlpha – (Float) offset di opacità iniziale, dove 0.0 è trasparente e 1.0 è opaco;

    • android:toAlpha – (Float) fine offset dell’opacità, dove 0.0 è trasparente e 1.0 è opaco;

  • <scale> – un’animazione di ridimensionamento. È possibile specificare il punto centrale dell’immagine da cui si sviluppa verso l’esterno (o verso l’interno) specificando pivotX e pivotY. Ad esempio, se questi valori sono 0, 0 (angolo superiore sinistro), tutta la crescita sarà verso il basso e verso destra. Rappresenta una ScalaAnimazione. attributi:

    • android:fromXScale – (Float) inizio offset della dimensione X, dove 1.0 non è cambiato;

    • android:toXScale – (Float) fine offset della dimensione X, dove 1.0 non è cambiato;

    • android:fromYScale – (Float) inizio offset della dimensione Y, dove 1.0 non è cambiato;

    • android:toYScale – (Float) fine offset della dimensione Y, dove 1.0 non è cambiato;

    • android:pivotX – (Float) la coordinata X rimane fissa quando l’oggetto viene ridimensionato;

    • android:pivotY – (Float) la coordinata Y rimane fissa quando l’oggetto viene ridimensionato;

  • <translate> – un movimento verticale e/o orizzontale. Supporta i seguenti attributi in uno dei seguenti tre formati: valori da -100 a 100 che terminano con “%”, che indica una percentuale relativa a se stesso; valori da -100 a 100 che terminano in “%p”, indicando una percentuale relativa al suo genitore; un valore float senza suffisso, che indica un valore assoluto. Rappresenta un TranslateAnimation. Attributi:

    • android:fromXDelta – (Float o percentuale) inizio offset X. Espresso: in pixel rispetto alla posizione normale, in percentuale rispetto alla larghezza dell’elemento o in percentuale rispetto alla larghezza genitore;

    • android:toXDelta – (Float o percentuale) fine offset X. Espresso: in pixel rispetto alla posizione normale, in percentuale rispetto alla larghezza dell’elemento o in percentuale rispetto alla larghezza genitore;

    • android:fromYDelta – (Float o percentuale) inizio offset Y. Espresso: in pixel rispetto alla posizione normale, in percentuale rispetto all’altezza dell’elemento o in percentuale rispetto all’altezza genitore;

    • android:toYDelta – (Float o percentuale) fine offset Y. Espresso: in pixel rispetto alla posizione normale, in percentuale rispetto all’altezza dell’elemento o in percentuale rispetto all’altezza genitore;

  • <Rotate> – un’animazione di rotazione. Rappresenta un RotateAnimation. Attributi:

    • android:fromDegrees – (Float) inizio posizione angolare, in gradi;

    • android:toDegrees – (Float) fine posizione angolare, in gradi;

    • android:pivotX – (Float o percentuale) la coordinata X del centro di rotazione. Espresso in pixel rispetto al bordo sinistro dell’oggetto, in percentuale rispetto al bordo sinistro dell’oggetto o in percentuale rispetto al bordo sinistro del contenitore genitore;

    • android:pivotY – (Float o percentuale) la coordinata Y del centro di rotazione. Espresso in pixel rispetto al bordo superiore dell’oggetto, in percentuale rispetto al bordo superiore dell’oggetto o in percentuale rispetto al bordo superiore del contenitore genitore;

interpolatori

Un interpolatore è un modificatore di animazione definito in XML che influenza la velocità di cambiamento in un’animazione. Ciò consente di accelerare, decelerare, ripetere, rimbalzare, ecc. i tuoi effetti di animazione esistenti.

Un interpolatore viene applicato a un elemento di animazione con l’attributo android:interpolator, il cui valore è un riferimento a una risorsa interpolatore.

Tutti gli interpolatori disponibili in Android sono sottoclassi della classe Interpolator. Per ogni classe di interpolatore, Android include una risorsa pubblica a cui è possibile fare riferimento per applicare l’interpolatore a un’animazione utilizzando l’attributo android:interpolator.

Interpolatori personalizzati

Se non si è soddisfatti degli interpolatori forniti dalla piattaforma, è possibile creare una risorsa interpolatore personalizzata con attributi modificati.

posizione del file: res/anim/filename.xml

Il nome file verrà utilizzato come ID risorsa.

elementi:

Si noti che ogni implementazione di Interpolator, quando definita in XML, inizia il suo nome in lettere minuscole.

  • <accelerateDecelerateInterpolator> – il tasso di cambiamento inizia e termina lentamente ma accelera nel mezzo. Nessun attributo;

  • <accelerateInterpolator> – il tasso di cambiamento inizia lentamente, quindi accelera. attributi:

    • android:factor – (Float) la velocità di accelerazione;

  • <anticipateInterpolator> – il cambiamento inizia all’indietro e poi si spinge in avanti. attributi:

    • android:tension – (Float) la quantità di tensione da applicare;

  • <anticipateOvershootInterpolator> – il cambiamento inizia indietro, si lancia in avanti e supera il valore target, quindi si fissa sul valore finale. attributi:

    • android:tension – (Float) la quantità di tensione da applicare;

    • android:extraTension – (Float) la quantità con cui moltiplicare la tensione;

  • <bounceInterpolator> – il cambiamento rimbalza alla fine. Nessun attributo;

  • <cycleInterpolator> – ripete l’animazione per un numero specificato di cicli. Il tasso di cambiamento segue un andamento sinusoidale. attributi:

    • android:cycles – (numero intero) il numero di cicli;

  • <decelerateInterpolator> – il tasso di cambiamento inizia rapidamente, quindi decelera. attributi:

    • android:factor – (Float) la velocità di decelerazione;

  • <linearInterpolator> – il tasso di cambiamento è costante. Nessun attributo;

  • <overshootInterpolator> – la modifica va avanti e supera l’ultimo valore, quindi torna indietro. attributi:

    • android:tension – (Float) la quantità di tensione da applicare;

Animazione del frame

Un’animazione definita in XML che mostra una sequenza di immagini in ordine.

posizione del file: res/drawable/filename.xml

Il nome file verrà utilizzato come ID risorsa.

elementi:

  • <animazione-list> – necessario, questo deve essere l’elemento principale. Contiene uno o più elementi <item>. attributi:

    • android:oneshot – (Boolean) “true” se si desidera eseguire l’animazione una volta; “false” per eseguire il ciclo dell’animazione;

  • <item> – un singolo fotogramma di animazione. Deve essere un elemento figlio di un elemento <animation-list>. attributi:

    • android:drawable – (risorsa drawable) il drawable da usare per questo telaio.

    • android:duration – (numero intero) la durata per mostrare questo frame, in millisecondi;