2014-06-07 9 views
6

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)?

+0

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) –

+0

in realtà quella domanda è un duplicato di questo .. grazie per il collegamento però – Bazinga

+0

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. –

risposta

12

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); 
    } 
} 
+0

Funziona con ObjectAnimator ma come possiamo sospendere/riprendere ObjectAnimatorSet? – Deven

+0

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? –