【发布时间】:2011-10-07 09:25:06
【问题描述】:
我必须为一个圆形倒计时计时器设置动画,我通过使用 AnimationDrawable 为 ImageView 的背景设置动画来实现(每个图像都删除了相应的圆圈切片)。问题是用户可以暂停这个动画,所以我必须重新加载动画,但随后出现问题。我尝试将动画设置为 null,将 ImageView 的背景设置为 null,设置动画的可见性,但实际上没有任何帮助,因为帧数保持不变。我必须找到一种解决方法来删除所有帧并添加新帧或将整个动画重置为默认状态。
第 1 步 - 初始化动画(起始帧索引为 0)
timerView.setBackgroundResource(R.drawable.timer_switch);
timerAnimation = (AnimationDrawable)timerView.getBackground();
System.out.println("Number of frames: " + timerAnimation.getNumberOfFrames());
for (int frameIndex = startingFrameIndex; frameIndex < 60; frameIndex++) {
if (frameIndex < 10) {
uri = "drawable/timer_0000" + frameIndex;
} else {
uri = "drawable/timer_000" + frameIndex;
}
imageResourceId = getResources().getIdentifier(uri, null, getPackageName());
timerAnimation.addFrame(getResources().getDrawable(imageResourceId), timerImageFrameDuration);
}
第 2 步 - 这是我不知道该怎么做的棘手部分。我尝试过的事情:
timerAnimation.stop();
timerAnimation.setCallback(null);
timerAnimation.setVisibility(true, false);
timerAnimation = null;
第 3 步 - 调用第 2 步后,我再次调用第 1 步,但 Sys.out 仍显示 60 作为当前帧数。 (此处的起始索引设置为点击暂停按钮时的最后一个隐藏帧。)
欢迎任何想法。
谢谢
【问题讨论】:
-
可以 ViewCompat.jumpDrawablesToCurrentState 帮助:developer.android.com/reference/android/support/v4/view/… 吗?
标签: android animation frame drawable