如何使用AnimationDrawable暂停帧动画?

时间:2010-05-19 10:04:20

标签: android android-animation pause animationdrawable

如何使用AnimationDrawable暂停帧动画?

2 个答案:

答案 0 :(得分:25)

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

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

希望它有所帮助。

答案 1 :(得分:2)