Joh*_*han 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

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

希望它可以帮助某人.