我正在使用此代码在不同的图像之间进行切换,但是唯一可见的图像是最后一个。 TextView“ vista_aterrizaje”在每个循环中均未显示预期值。
我试图在sleep()之前使用invalidate()方法,以尝试在for的每个不同循环中可视化它。但这不起作用。
establecerImagen()方法用于更改imageView。
for (int i = 0; i < 15; i++) {
cur_aterrizaje = aterrizajes[rand.nextInt(aterrizajes.length)];
vista_aterrizaje.setText(cur_aterrizaje);
establecerImagen(cur_aterrizaje);
vista_aterrizaje.();
mapa.invalidate();
try{
Thread.sleep(50);
} catch (Exception e) {
e.printStackTrace();
}
}
我认为问题出在sleep()方法中,但我不知道如何在每次更改视图后等待几秒钟以可视化每个更改。
尝试使用CountDownTimer。
// here interval 1000 stands for 1sec,
//so onTick() will be called 15 times, each call after 1 sec interval. so you can set your own values as per your need.
int i=0;
long interval = 1000;
new CountDownTimer((15 * interval), interval){
@Override
public void onTick(long l) {
vista_aterrizaje.setText(i+"");
establecerImagen(cur_aterrizaje);
i++;
}
@Override
public void onFinish() {
}
}.start();
sleep()的参数以毫秒为单位。因此,如果要显示每个图像1秒钟,则参数应为1000。
更好的方法是这样的:
handler=new Handler();
Runnable r=new Runnable() {
public void run() {
//display your image here -- it will be displayed after a 1-second delay
}
};
handler.postDelayed(r, 1000);