Puoi utilizzare il sistema di animazione delle viste per eseguire l'animazione interpolata sulle viste. Animazione dei preadolescenti calcola l'animazione con informazioni quali il punto iniziale, il punto finale, le dimensioni, la rotazione e altri aspetti comuni di un'animazione.
Un'animazione di interpolazione può eseguire una serie di semplici trasformazioni (posizione, dimensione, rotazione
e trasparenza) sui contenuti di un oggetto View. Pertanto, se hai un oggetto TextView
, puoi spostare, ruotare, ingrandire o ridurre il testo. Se presenta un
immagine di sfondo, l'immagine di sfondo verrà trasformata insieme al testo. animation package
fornisce tutti i corsi utilizzati in un'animazione di interpolazione.
Una sequenza di istruzioni di animazione definisce l'animazione di interpolazione, definita da XML o
Codice Android. Come per la definizione di un layout, è consigliato un file XML perché è più leggibile,
riutilizzabili e scambiabili rispetto all'hardcoded dell'animazione. Nell'esempio riportato di seguito, viene utilizzato XML. (A
per saperne di più sulla definizione di un'animazione nel codice dell'applicazione, anziché in XML, consulta il
classe AnimationSet
e altre Animation
sottoclassi.)
Le istruzioni dell'animazione definiscono le trasformazioni che devono verificarsi, quando e il tempo necessario per la loro applicazione. Le trasformazioni possono essere sequenziali o simultanee - Ad esempio, puoi fare in modo che i contenuti di una visualizzazione di testo vengano spostati da sinistra a destra e poi ruotarli 180 gradi oppure il testo può essere spostato e ruotato contemporaneamente. Ogni trasformazione richiede un insieme di parametri specifici per quella trasformazione (dimensione iniziale e dimensione finale per la dimensione variazione, angolo iniziale e angolo finale per la rotazione e così via), nonché un insieme di valori comuni (ad esempio, ora di inizio e durata). Per realizzare diverse trasformazioni contemporaneamente, assegnare loro la stessa ora di inizio; per renderle sequenziali, calcola l'ora di inizio più la durata della trasformazione precedente.
Il file XML dell'animazione appartiene alla directory res/anim/
del tuo dispositivo Android
progetto. Il file deve avere un singolo elemento radice: si tratta di un solo
<alpha>
, <scale>
, <translate>
<rotate>
, elemento di interpolatore o <set>
elemento contenente
gruppi di questi elementi (che potrebbero includere un altro <set>
). Per impostazione predefinita,
le istruzioni dell'animazione vengono applicate contemporaneamente. Per fare in modo che vengano eseguite in sequenza, devi
specifica l'attributo startOffset
, come mostrato nell'esempio seguente.
Il seguente XML di una delle ApiDemos viene usato per allungare, quindi ruotare e Ruotare un oggetto View.
<set android:shareInterpolator="false"> <scale android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fromXScale="1.0" android:toXScale="1.4" android:fromYScale="1.0" android:toYScale="0.6" android:pivotX="50%" android:pivotY="50%" android:fillAfter="false" android:duration="700" /> <set android:interpolator="@android:anim/decelerate_interpolator"> <scale android:fromXScale="1.4" android:toXScale="0.0" android:fromYScale="0.6" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:startOffset="700" android:duration="400" android:fillBefore="false" /> <rotate android:fromDegrees="0" android:toDegrees="-45" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:startOffset="700" android:duration="400" /> </set> </set>
Le coordinate sullo schermo (non utilizzate in questo esempio) sono (0,0) nell'angolo in alto a sinistra e aumenta man mano che scendi e verso destra.
Alcuni valori, come pivotX, possono essere specificati in relazione all'oggetto stesso o in relazione principale. Assicurati di usare il formato corretto per ciò che vuoi ("50" per il 50% rispetto al file principale, o "50%" per il 50% rispetto a sé stesso).
Puoi determinare come viene applicata una trasformazione nel tempo assegnando un Interpolator
. Android include diverse sottoclassi di Interpolator
specificare varie curve di velocità: ad esempio, AccelerateInterpolator
indica a una trasformazione di iniziare lentamente e accelerare. Ognuno di questi ha un valore di attributo che può essere
applicati nel file XML.
Con questo XML salvato come hyperspace_jump.xml
in res/anim/
del progetto, il codice seguente lo farà riferimento e lo applicherà a un oggetto ImageView
dal layout.
Kotlin
AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump).also { hyperspaceJumpAnimation -> findViewById<ImageView>(R.id.spaceshipImage).startAnimation(hyperspaceJumpAnimation) }
Java
ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage); Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump); spaceshipImage.startAnimation(hyperspaceJumpAnimation);
In alternativa a startAnimation()
, puoi definire un'ora di inizio per il
animazione con
, quindi assegna l'animazione alla visualizzazione con Animation.setStartTime()
.View.setAnimation()
Per ulteriori informazioni sulla sintassi XML, sui tag e sugli attributi disponibili, consulta la sezione Risorse di animazione.
Nota: indipendentemente da come si sposta o ridimensiona l'animazione, i limiti della vista in cui si trova l'animazione non verranno regolati automaticamente per adattarla. Anche in questo caso, l'animazione verrà comunque tracciata oltre i limiti della sua visualizzazione e non verrà ritagliata. Tuttavia, verrà eseguito un ritaglio se l'animazione supera i limiti della vista principale.