好的,类似的问题已经被问过了,但是没有任何答案能够解决我的问题。我尝试使用Thread.sleep和延迟runnable。使用Handler等。
我想要使用相同的ImageView显示一系列帧动画(AnimationDrawable),并根据需要更改背景动画。用户输入一系列5个动画,然后可以播放它们(如果我的程序正常工作)。一旦选择了动画,我就使用包含if语句和switch语句的for循环来选择所选的动画并播放它们。
正如你所想象的那样,这不起作用,因为程序通过for循环,并且只有第一个和最后一个动画实际播放。以下是代码的主要内容:
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进行的一系列帧动画。提前感谢您的帮助!