なぜまだこれを行う方法を見つけられなかったのか疑問に思います。とてもシンプルに思えますが、一日中これに費やしました。しかし、それはできませんでした。
サイコロの画像をセットしました。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は変更されないままで、ループの最後の反復で突然変更されます。3つのケースすべてでlogcatにエラーはありません。
糸脱毛もうまくいかないことがわかりました。