2010-05-19 105 views

回答

24

我知道這個線程是很老,但因爲這是在谷歌第一次的答案時,我正在尋找一種方法來暫停動畫,我就發佈解決方案在這裏的人別人去看看。 您需要做的是爲您想要使用的動畫類型創建子類,然後添加用於暫停和恢復動畫的方法。下面是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; 
    } 
} 

這將不斷增加你的開始時間,而動畫暫停時,有效地將其與整理,並保持它的狀態,當你暫停它。

希望它可以幫助別人。

+0

這工作完美。謝謝。 – Weston 2011-12-06 09:31:56

+0

感謝與我們分享這是非常有用的+1從我身邊! – Deepak 2012-04-05 12:28:30

+0

@Deepak它可以用於框架動畫 – Ashishsingh 2012-06-10 04:40:10