我想知道为什么仍然无法找到一种方法来做到这一点。虽然看起来很简单,但我花了整整一天的时间。但不能这样做。在循环中更改图像 - Android
我有一套骰子图像。 1.png,2.png,....和6.png。 我的布局中有一个ImageView。也就是说,
ImageView dice = (ImageView) findViewById(R.id.imageViewrollingdiceOne);
在这里我要迅速改变这种的ImageView看到某种使用上述6个图像视觉/动画。为此我写了下面的一段代码。
代码1:
for (int j=0;j<10;j++){
int randomNum = random.nextInt(6);
System.out.println("Random Value " + randomNum);
dice.setImageResource(images[randomNum]);
}
输出:
没有视觉。 imageView保持不变,并在上次迭代循环中突然改变。 我以为这是因为循环执行速度非常快。 然后我做了以下。
代码2:
for (int j=0;j<10;j++){
int randomNum = random.nextInt(6);
System.out.println("Random Value " + randomNum);
dice.setImageResource(images[randomNum]);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
输出:
同样没有视觉。 imageView保持不变,并在上次迭代循环中突然改变。 然后我做了以下。
代码3:
final Handler localHandler = new Handler();
Runnable runnableObject = new Runnable() {
public void run() {
final ImageView dice = (ImageView) findViewById(R.id.imageViewrollingdiceOne);
int randomNum = random.nextInt(6);
System.out.println("Random Value" + randomNum);
dice.setImageResource(images[randomNum]);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
for (int j=0;j<10;j++){
localHandler.postDelayed(runnableObject, 1000);
}
同样没有视觉。 imageView保持不变,并在上次迭代循环中突然改变。 在这三种情况下,logcat中没有任何错误。
有人可以帮助我吗?线程也没有办法。任何测试解决方案将不胜感激。
谢谢大家。
非常感谢Mr.Me.可运行的代码工作得很好。我之前也用过这个,但问题是我没有调用'handler.postDelayed(this,500);'方法。非常感谢。 –