Как ждать смены разных изображений в андроиде? - PullRequest
0 голосов
/ 21 октября 2019

Я использую этот код для переключения между разными изображениями, но единственное изображение, которое визуализируется, является последним. TextView "vista_aterrizaje" не показывает ожидаемое значение в каждом цикле.

Я пытался использовать метод 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 (), но я не знаюкак ждать несколько секунд после каждого изменения представлений, чтобы визуализировать каждое изменение.

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

Параметр для сна () указывается в миллисекундах. Поэтому, если вы хотите показывать каждое изображение в течение 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);
0 голосов
/ 21 октября 2019

Попробуйте использовать 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();
...