如何使用 AnimationDrawable 暂停帧动画?
问问题
10293 次
2 回答
25
我意识到这个线程已经很老了,但是由于这是我在寻找暂停动画的方法时在 Google 上的第一个答案,所以我将在此处发布解决方案供其他人查看。您需要做的是子类化您想要使用的动画类型,然后添加暂停和恢复动画的方法。这是 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;
}
}
这将在动画暂停时不断增加您的开始时间,有效地防止它完成并保持它在您暂停时的状态。
希望它可以帮助某人。
于 2011-10-20T19:04:43.357 回答
2
于 2010-05-19T10:06:04.953 回答