作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我必须为一个循环倒数计时器设置动画,我通过使用 AnimationDrawable 为 ImageView 的背景设置动画来实现(每个图像都删除了相应的圆切片)。问题是用户可以暂停这个动画,所以我必须重新加载动画,但随后出现问题。我尝试将动画设置为空,将 ImageView 的背景设置为空,设置动画的可见性,但实际上没有任何帮助,因为帧数保持不变。我必须找到一种解决方法来删除所有帧并添加新帧或将整个动画重置为默认状态。
第 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 作为当前帧数。 (此处的起始索引设置为点击暂停按钮时的最后一个隐藏帧。)
欢迎任何想法。
谢谢
最佳答案
这将在调用 stop()
后立即将 (AnimationDrawable) timerAnimation
发送到第一帧:
timerAnimation.stop();
timerAnimation.selectDrawable(0);
关于android - 如何重置 AnimationDrawable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7685327/
我是一名优秀的程序员,十分优秀!