如何使用AnimationDrawable暂停帧动画?
答案 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)