【发布时间】:2015-09-08 00:07:49
【问题描述】:
好的,有人问了一些类似的问题,但没有任何答案对解决我的问题有任何影响。我试过 Thread.sleep,还有延迟的可运行。使用处理程序等。
我想使用相同的图像视图显示一系列帧动画(AnimationDrawable),并根据需要更改背景动画。用户输入一系列 5 个动画,然后可以播放它们(如果我的程序有效)。选择动画后,我使用包含 if 语句和 switch 语句的 for 循环来选择选择的任何动画并播放它们。
正如您可能想象的那样,这不能正常工作,因为程序在 for 循环中快速运行,并且只有第一个和最后一个动画实际播放。这是代码的jist:
for(i=0;i<5;i++){
if(conditions){
view.setBackground(chosenAnimation);
((AnimationDrawable)view.getBackground().start();
}
}
正如我所说,我已经尝试过 Thread.sleep(),但它并没有达到我想要的效果。我尝试使用 Handler 类并延迟可运行对象。我试过这个:
view.postDelayed(new Runnable() {
@Override
public void run() {
//works the same without this line
((AnimationDrawable)view.getBackground()).stop();
((AnimationDrawable)view.getBackground()).start();
}
}, 1000);
这些东西根本没有做任何事情,除了在它做与我添加这些东西之前完全相同的事情之前添加暂停。我已经仔细调试了代码,一切正常。动画都经过单独测试。
正如我所说,已经提出并回答了类似的问题,但没有提供任何我想要的东西,即程序要等到一个动画完成后再再次运行 for 循环。
我想再次声明,这是一系列使用 AnimationDrawable 的帧动画,每次都使用相同的 imageview。提前致谢!
【问题讨论】: