如何一次停止循环 运行
How to stop for loop running all at once
我目前正在练习使用带有数组列表的 for 循环。每次用户得到正确的答案时,都会将一个额外的随机值添加到序列中。因此,一开始会闪烁一幅图像,每次都会依次闪烁一幅图像。
我遇到的问题是整个序列同时播放。例如,在第二个 运行 上,两个图像应该闪烁,一个然后另一个。但是我目前得到的是同时闪烁。我怎样才能打破循环,让一个闪烁,然后另一个闪烁。
我的代码如下:
ArrayList<Integer> list = new ArrayList<Integer>();
int retval;
public void Run(){
Random rand = new Random();
int rndInt = rand.nextInt(5)+ 1 ;
list.add(rndInt);
int totalElements = list.size();
for(int i=0; i < totalElements;i++ ){
retval = list.get(i);
if (retval==1){
Centre.setImageResource(R.drawable.flash1);
Reset.start();// runs a class that resets the imageiew after a few seconds
}
else if (retval==2){
upperRight.setImageResource(R.drawable.flash2);
Reset.start();
}
else if (retval==3){
lowerRight.setImageResource(R.drawable.flash3);
Reset.start();
}
else if (retval==4){
lowerLeft.setImageResource(R.drawable.flash4);
Reset.start();
}
else if (retval==5){
upperLeft.setImageResource(R.drawable.flash5);
Reset.start();
}
}
}
编辑
CountDownTimer Reset = new CountDownTimer(1000 , 0010){
public void onTick(long millisUntilFinished) {
}
public void onFinish() {
Centre.setImageResource(R.drawable.i1);
upperRight.setImageResource(R.drawable.i2);
lowerRight.setImageResource(R.drawable.i3);
lowerLeft.setImageResource(R.drawable.i4);
upperLeft.setImageResource(R.drawable.i5);
}
};
好的,如果有人想按顺序显示图像,这是解决方法:
public void ZAP() {
if(i < totalElements){
retval =list.get(i);
if (retval==1){
check = 1;
Centre.setImageResource(R.drawable.flash1);
ResetTimer.start();
}
else if (retval==2){
check = 2;
upperRight.setImageResource(R.drawable.flash2);
ResetTimer.start();
}
else if (retval==3){
check =3;
lowerRight.setImageResource(R.drawable.flash3);
ResetTimer.start();
}
else if (retval==4){
check = 4;
lowerLeft.setImageResource(R.drawable.flash4);
ResetTimer.start();
}
else if (retval==5){
check=5;
upperLeft.setImageResource(R.drawable.flash5);
ResetTimer.start();
}}
}
public void Rand() {
i=0 ;
Random rand = new Random();
int rndInt = rand.nextInt(5)+ 1 ;
list.add(rndInt);
totalElements = list.size();
Log.d("LOOK", Integer.toString(rndInt));
Log.i("VALUE LIST ", list.toString()+" <<<<LIST HERE");
ZAP();
我目前正在练习使用带有数组列表的 for 循环。每次用户得到正确的答案时,都会将一个额外的随机值添加到序列中。因此,一开始会闪烁一幅图像,每次都会依次闪烁一幅图像。
我遇到的问题是整个序列同时播放。例如,在第二个 运行 上,两个图像应该闪烁,一个然后另一个。但是我目前得到的是同时闪烁。我怎样才能打破循环,让一个闪烁,然后另一个闪烁。
我的代码如下:
ArrayList<Integer> list = new ArrayList<Integer>();
int retval;
public void Run(){
Random rand = new Random();
int rndInt = rand.nextInt(5)+ 1 ;
list.add(rndInt);
int totalElements = list.size();
for(int i=0; i < totalElements;i++ ){
retval = list.get(i);
if (retval==1){
Centre.setImageResource(R.drawable.flash1);
Reset.start();// runs a class that resets the imageiew after a few seconds
}
else if (retval==2){
upperRight.setImageResource(R.drawable.flash2);
Reset.start();
}
else if (retval==3){
lowerRight.setImageResource(R.drawable.flash3);
Reset.start();
}
else if (retval==4){
lowerLeft.setImageResource(R.drawable.flash4);
Reset.start();
}
else if (retval==5){
upperLeft.setImageResource(R.drawable.flash5);
Reset.start();
}
}
}
编辑
CountDownTimer Reset = new CountDownTimer(1000 , 0010){
public void onTick(long millisUntilFinished) {
}
public void onFinish() {
Centre.setImageResource(R.drawable.i1);
upperRight.setImageResource(R.drawable.i2);
lowerRight.setImageResource(R.drawable.i3);
lowerLeft.setImageResource(R.drawable.i4);
upperLeft.setImageResource(R.drawable.i5);
}
};
好的,如果有人想按顺序显示图像,这是解决方法:
public void ZAP() {
if(i < totalElements){
retval =list.get(i);
if (retval==1){
check = 1;
Centre.setImageResource(R.drawable.flash1);
ResetTimer.start();
}
else if (retval==2){
check = 2;
upperRight.setImageResource(R.drawable.flash2);
ResetTimer.start();
}
else if (retval==3){
check =3;
lowerRight.setImageResource(R.drawable.flash3);
ResetTimer.start();
}
else if (retval==4){
check = 4;
lowerLeft.setImageResource(R.drawable.flash4);
ResetTimer.start();
}
else if (retval==5){
check=5;
upperLeft.setImageResource(R.drawable.flash5);
ResetTimer.start();
}}
}
public void Rand() {
i=0 ;
Random rand = new Random();
int rndInt = rand.nextInt(5)+ 1 ;
list.add(rndInt);
totalElements = list.size();
Log.d("LOOK", Integer.toString(rndInt));
Log.i("VALUE LIST ", list.toString()+" <<<<LIST HERE");
ZAP();