如何使用AnimationDrawable暂停帧动画?

8

如何使用AnimationDrawable暂停帧动画?

2个回答

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;
    }
}
这将在动画暂停时不断增加起始时间,有效地保持其状态不变,使其无法完成。希望对某些人有所帮助。

感谢您与我们分享这个非常有帮助的内容,我给您点赞! - Deepak
@Deepak 这可以用于帧动画。 - Ashishsingh
@Johan 这可以用于帧动画。 - Ashishsingh

2

谢谢回复。是的,我知道没有暂停方法,所以我实现了一个自定义类来实现Runnable,并使用postDelayed和removeCallbacks方法来完成任务。我不确定这是否是正确的做法。 - akc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接