Lev*_*rti 32 animation android frame drawable
我必须为圆形倒计时器设置动画,我是通过使用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);
}
Run Code Online (Sandbox Code Playgroud)
第2步 - 这是我不知道该怎么做的棘手部分.我试过的事情:
timerAnimation.stop();
timerAnimation.setCallback(null);
timerAnimation.setVisibility(true, false);
timerAnimation = null;
Run Code Online (Sandbox Code Playgroud)
步骤3 - 在调用步骤2之后,我再次调用步骤1,但Sys.out仍然显示60作为当前帧数.(点击暂停按钮时,此处的起始索引设置为最后隐藏的帧.)
欢迎任何想法.
谢谢
Tig*_*ger 86
这将在调用后timerAnimation立即将(AnimationDrawable)发送到第一帧stop():
timerAnimation.stop();
timerAnimation.selectDrawable(0);
Run Code Online (Sandbox Code Playgroud)
JoJ*_*oJo 13
我有同样的问题,停止动画将停止在当前帧.我希望它表现得像iOS,停止会回到第一帧.这个解决方案对我有用:
((AnimationDrawable)(someButton.getBackground())).stop();
someButton.setBackgroundDrawable(null);
someButton.setBackgroundResource(R.drawable.animation);
Run Code Online (Sandbox Code Playgroud)
这首先阻止它(可能没有必要).然后它杀死了背景动画.最后,它重新创建背景.
| 归档时间: |
|
| 查看次数: |
16619 次 |
| 最近记录: |