Visualizzazione stampabile
-
Tween animation
Ragazzi ci sto sbattendo la testa da un bel po' ma proprio nn riesco a fare quello che vorrei.
Mi spiego:
ho una tween animation che ruota.
La starto e stoppo senza problemi, però vorrei che sia quando si ferma che quando riparte riprendesse da dove era, e non che si resetti come invece fa.
Ecco il codice:
xml che descrive l'animazione di rotazione:
codice:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@anim/wheel_interpolator">
<rotate
android:fromDegrees="0"
android:toDegrees="360"
android:repeatCount="infinite"
android:duration="10000"
android:pivotX="50%"
android:pivotY="50%"
/>
</set>
Così la starto:
codice:
wheel=(ImageView)findViewById(R.id.wheel);
animation=AnimationUtils.loadAnimation(this, R.anim.wheel_animation);
wheel.startAnimation(animation);
e così la fermo:
codice:
wheel.clearAnimation();
Non mi sono chiari i metodi cancel() e reset() di Animation.
Se non chiamo clearAnimation come ho fatto poco sopra, cmq l'animazione riparte.
Grazie a chi mi darà delucidazioni.
-
Quote:
Originariamente inviato da
DarthSith
Ragazzi ci sto sbattendo la testa da un bel po' ma proprio nn riesco a fare quello che vorrei.
Mi spiego:
ho una tween animation che ruota.
La starto e stoppo senza problemi, però vorrei che sia quando si ferma che quando riparte riprendesse da dove era, e non che si resetti come invece fa.
Ecco il codice:
xml che descrive l'animazione di rotazione:
codice:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@anim/wheel_interpolator">
<rotate
android:fromDegrees="0"
android:toDegrees="360"
android:repeatCount="infinite"
android:duration="10000"
android:pivotX="50%"
android:pivotY="50%"
/>
</set>
Così la starto:
codice:
wheel=(ImageView)findViewById(R.id.wheel);
animation=AnimationUtils.loadAnimation(this, R.anim.wheel_animation);
wheel.startAnimation(animation);
e così la fermo:
codice:
wheel.clearAnimation();
Non mi sono chiari i metodi cancel() e reset() di Animation.
Se non chiamo clearAnimation come ho fatto poco sopra, cmq l'animazione riparte.
Grazie a chi mi darà delucidazioni.
Ehm, premesso che non ne ho la più pazza idea, quel fromDegrees non andrebbe aggiornato? Ossia
<pseudo>
animation.stop();
current_degrees = animation.getDegrees();
<pausa>
animation.start(current_degrees);
</pseudo>
Cioè, così come lo hai scritto non mi sorprende riparta sempre da tempo zero; ma del resto farei meglio a scaricare un nuovo gioco piuttosto che sparar palle
:D
-
No purtroppo quella è una dichiarazione. Ci vorrebbe qualcosa per metterla in pausa.
-
Prova così
Ciao lorenzoff
prova ad aggiungere l'attributo android:fillAfter="true" all'interno del set:
dovresti avere una cosa del genere:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@anim/wheel_interpolator" android:fillAfter="true">
-
opsss!!! la risposta era per DarthSith...
e visto che ci siamo pongo anche io una domanda:
qualcuno sa come funzionano esattamente "traslate" e "scale" con le dimensioni in %p?
devo animare una draw che deve fare un percorso a Z sullo schermo, e sto uscendo pazzo!
Esiste per caso un tool che aiuta a generare l'xml per questo tipo di animazione?
-
Il fillAfter e before fa proprio quello che vorrei, ma nn funziona uguale perchè evidentenmente sbaglio il modo di startare e stoppare l'animazione.
L'unico modo per stopparla che ho trovato è View.clearAnimation(Animation).
Questo però fa si che l'animazione si resetti, e nn risolvo quindi il problema.
Riguardo il tuo quesito non so aiutarti.
-
ho un linearLayout (L1) che contiene un altro linearLayout (L2) che contiene bottoni e immagini. Premendo uno dei bottoni dentro L2 vorrei spostare nel basso il layout L2. Se setto fillAfter=false L2 mi fa l'animazione ma poi torna alla posizione iniziale. Se setto fillAfter=true L2 rimane nella nuova posizione, ma i bottoni all'interno non funzionano più, o meglio l'area per cliccare il bottone non si trova dove effettivamente vedo il bottone dentro L2 nella nuova posizione, ma tale area si trova in alto dove sarebbe se metto fillAfter=false.
Come risolvo? grazie.