2010-05-19 96 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