8

如何使用 AnimationDrawable 暂停帧动画?

4

2 回答 2

25

我意识到这个线程已经很老了,但是由于这是我在寻找暂停动画的方法时在 Google 上的第一个答案,所以我将在此处发布解决方案供其他人查看。您需要做的是子类化您想要使用的动画类型,然后添加暂停和恢复动画的方法。这是 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;
    }
}

这将在动画暂停时不断增加您的开始时间,有效地防止它完成并保持它在您暂停时的状态。

希望它可以帮助某人。

于 2011-10-20T19:04:43.357 回答
2

从 API:

动画没有暂停方法。

http://www.androidjavadoc.com/1.0_r1/android/view/animation/package-summary.html

于 2010-05-19T10:06:04.953 回答