Mi rendo conto che i metodi di pausa e ripresa sugli oggetti objectanimator sono disponibili solo per l'API: 19. Tuttavia, dal momento che né io né la metà degli utenti Android hanno questa API, esiste un'alternativa per mettere in pausa l'animazione e quindi riprendere dallo stesso stato anziché ricominciare dall'inizio? Qualsiasi aiuto sarebbe molto apprezzato.Sospendi/riprendi l'animazione in API meno di 19 (Android)?
risposta
Nel mio progetto ho dovuto fare ruotare l'animazione (che sarà in pausa e riprendere dalla stessa posizione/fine), e l'ho risolto ottenendo l'ora corrente dell'animatore (quando termina l'animazione/quando faccio clic su pausa) e, dopo aver avviato l'animatore, ho impostato "setCurrentPlayTime (con l'ora di fine)". Per ottenere l'ora corrente sto usando getCurrentPlayTime(); e per impostare il tempo sto usando setCurrentPlayTime() della classe ObjectAnimator.
Riferimenti: http://developer.android.com/reference/android/animation/ValueAnimator.html#setCurrentPlayTime(long) http://developer.android.com/reference/android/animation/ValueAnimator.html#getCurrentPlayTime()
private ObjectAnimator mObjectAnimator;
private long mAnimationTime;
private void stopAnimation() {
if(mObjectAnimator != null) {
mAnimationTime = mObjectAnimator.getCurrentPlayTime();
mObjectAnimator.cancel();
}
}
private void playAnimation() {
if (mObjectAnimator != null) {
mObjectAnimator.start();
mObjectAnimator.setCurrentPlayTime(mAnimationTime);
}
}
Funziona con ObjectAnimator ma come possiamo sospendere/riprendere ObjectAnimatorSet? – Deven
Ciao NikolaDev, ho provato ad implementare la soluzione che hai fornito per annullare la pausa di animazione, ma quando inizio e poi settaggio il tempo di riproduzione corrente il riavvio dell'animazione hai qualche idea di cosa potrebbe causare questo? –
possibile duplicato di [? Come riprendere e mettere in pausa ObjectAnimator in Android per i livelli API di sotto 19] (http://stackoverflow.com/questions/25231707/how- to-resume-and-pause-objectanimator-in-android-per-api-levels-below-19) –
in realtà quella domanda è un duplicato di questo .. grazie per il collegamento però – Bazinga
Non c'è alcuna connotazione negativa nel contrassegnare un domanda "duplicare", almeno per quanto ho capito. D'altra parte, SO ci incoraggia a scegliere un duplicato per * risposte *, quindi la mia scelta era quella di posizionare il marcatore per quello che è stato risposto in precedenza. –