Как показать изображение в течение пяти секунд, а затем показать другое (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 ответа:
Используйте обратный отсчет по умолчанию http://developer.android.com/reference/android/os/CountDownTimer.html
- Установите первое изображение
- начните обратный отсчет
Установите новое изображение в 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); } });