我想知道为什么我仍然无法找到一种方法来做到这一点。虽然看起来很简单,但我花了一整天的时间。但不能那样做。
我有一组骰子图像。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 都没有任何错误。
我发现线程也不能解决问题。