如何使用AnimationDrawable暂停帧动画?
如何使用AnimationDrawable暂停帧动画?
我知道这个帖子很旧了,但因为当我在谷歌搜索暂停动画的方法时,这是我发现的第一个答案,所以我在这里发布解决方案供其他人查看。 你需要做的是子类化你想使用的动画类型,然后添加暂停和恢复动画的方法。这里是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;
}
}
这将在动画暂停时不断增加起始时间,有效地保持其状态不变,使其无法完成。希望对某些人有所帮助。