Как показать изображение в течение пяти секунд, а затем показать другое (Android Studio)


У меня есть мой Java-код, у меня есть этот макет, где есть ImageView и Button, в моих папках Drawable у меня есть изображения, что я хочу: когда кнопка advance нажата, ImageView покажет изображение(image1.png, который находится в папке drawable) и через 5 секунд показать другое изображение (image2.формат PNG). Проблема в том, что я не знаю, как сделать эту паузу.

advance.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                image.setImageResource(R.drawable.image1);
                  //TO WAIT 5 SCONDS...
                image.setImageResource(R.drawable.image2);
            }
        });
3 2

3 ответа:

Используйте обратный отсчет по умолчанию http://developer.android.com/reference/android/os/CountDownTimer.html

  1. Установите первое изображение
  2. начните обратный отсчет

Установите новое изображение в onFinish ()

    new CountDownTimer(5000, 1000) { // 5000 = 5 sec

     public void onTick(long millisUntilFinished) {
     }

     public void onFinish() {
        image.setImageResource(R.drawable.image2);
     }
}.start();

Редактировать:

Дополнительная информация: в документации вы можете найти

Обратный отсчет (long millisInFuture, long countDownInterval)

Таким образом, первый параметр - это общее время, которое вы хотите иметь (в миллисекундах, 5 сек = 5000 Милис) и второй параметр-интервал. Здесь 1000 = 1 сек. это означает, что таймер будет тикать каждую секунду. Таким образом, onTick (long ) будет вызываться каждую секунду (когда таймер работает)

Вы также можете использовать таймер и TimerTask

advance.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                image.setImageResource(R.drawable.image1);
                Timer t = new Timer();
                t.schedule(new TimerTask() {
                     @Override
                     public void run() {
                          image.setImageResource(R.drawable.image2);
                     }
                }, 5000);
            }
        });

Вы также можете использовать обработчик: http://developer.android.com/reference/android/os/Handler.html#postDelayed(java.lang.Runnable, длинный)

advance.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    image.setImageResource(R.drawable.image1);

                    new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        image.setImageResource(R.drawable.image2);
                    }
                }, 5000);

                }
    });