Изменение ресурса изображения - PullRequest
0 голосов
/ 01 ноября 2018

Когда я нажимаю на кнопку, я хочу изменить представление изображения на другое изображение, подождать 3 секунды и снова изменить его на другое изображение (без повторного нажатия).

1 клик -> изменить изображение -> подождать 3 секунды -> изменить изображение.

Это мой код:

northLight.setImageResource(R.drawable.red_and_yellow);

try {
     TimeUnit.MILLISECONDS.sleep(3000);
} catch (InterruptedException e) {}

northLight.setImageResource(R.drawable.green);

Во время работы программы, когда я фактически нажимаю кнопку, программа игнорирует первый setImage и заменяет его прямо на второй setImage (на зеленый).

Как я могу решить эту проблему?

Ответы [ 3 ]

0 голосов
/ 01 ноября 2018

вы можете использовать обработчик для него,

northLight.setImageResource(R.drawable.red_and_yellow);
new Handler().postDelayed(new Runnable() {
public void run() {
 // Actions to do after 3 seconds
         northLight.setImageResource(R.drawable.green);
}
}, 3000);
0 голосов
/ 01 ноября 2018

Попробуйте этот код

new CountDownTimer(3000,1000){
  @Override
  public void onTick(long l) {
    northLight.setImageResource(R.drawable.red_and_yellow);
  }
  @Override
  public void onFinish() {
    northLight.setImageResource(R.drawable.green);
  }
}.start();
0 голосов
/ 01 ноября 2018

Вы можете попробовать использовать обработчик для ожидания и изменения изображения. Когда нажата ваша кнопка, измените ваше изображение и запустите обработчик с задержкой в ​​3 секунды.

//Call this method when your button is clicked
public void changeImage() {
    northLight.setImageResource(R.drawable.red_and_yellow);

    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            northLight.setImageResource(R.drawable.green);
        }
    }, 3000);
}
...