2010-05-19 10 views

Odpowiedz

24

Zdaję sobie sprawę, ten wątek jest dość stary, ale ponieważ była to pierwsza odpowiedź na Google, gdy szukałem sposobu, aby wstrzymać animację, po prostu pisać tutaj rozwiązanie dla kogoś jeszcze zobaczyć. Należy zrobić podklasę typu animacji, której chcesz użyć, a następnie dodać metody wstrzymywania i wznawiania animacji. Oto przykład dla AlphaAnimation:

public class PausableAlphaAnimation extends AlphaAnimation { 

    private long mElapsedAtPause=0; 
    private boolean mPaused=false; 

    public PausableAlphaAnimation(float fromAlpha, float toAlpha) { 
     super(fromAlpha, toAlpha); 
    } 

    @Override 
    public boolean getTransformation(long currentTime, Transformation outTransformation) { 
     if(mPaused && mElapsedAtPause==0) { 
      mElapsedAtPause=currentTime-getStartTime(); 
     } 
     if(mPaused) 
      setStartTime(currentTime-mElapsedAtPause); 
     return super.getTransformation(currentTime, outTransformation); 
    } 

    public void pause() { 
     mElapsedAtPause=0; 
     mPaused=true; 
    } 

    public void resume() { 
     mPaused=false; 
    } 
} 

ten zachowa zwiększenie StartTime, podczas gdy animacja jest wstrzymane, skutecznie utrzymując ją od wykończenia i utrzymanie jest to stan, w którym to było, kiedy zatrzymał się.

Mam nadzieję, że komuś pomaga.

+0

To działało idealnie. Dziękuję Ci. – Weston

+0

Dzięki za podzielenie się z nami jest to bardzo pomocne +1 z mojej strony! – Deepak

+0

@Deepak może pracować dla animacji klatek – Ashishsingh

Powiązane problemy