Как сделать, чтобы в методе с использованием оператора Thread.sleep() программа работала поочередно?

В программе требуется чтобы высветилась одна картинка, прошло пару секунд, и высветилась другая картинка. Делаю это с помощью оператора Thread.sleep(2000) но метод(программа), показывает сразу последний картинку с задержкой в 2 секунды. Будто он у себя в методе все сделал, а но выход отдает все что осталось. Фрагмент кода:
but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String vz = otv1.getText().toString();
                int otv11 = Integer.parseInt(vz);
                if (sum == otv11) {
                    txt3.setText("Правильно, вы угадали!");
                    im.setImageDrawable(getResources().getDrawable(R.drawable.fon1));
                } else {
                    txt3.setText("Неправильно, правильный ответ: " + sum + ".");
                    im.setImageDrawable(getResources().getDrawable(R.drawable.fon2));
                }
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                im.setImageDrawable(getResources().getDrawable(R.drawable.fon));
            }
        });
  • Вопрос задан
  • 255 просмотров
Решения вопроса 1
@Alecxandrys
Не надо тормозить главный поток подобным образом
Гораздо правильнее будет воспользоваться Timer.shedule и отдать ему TimerTask
but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String vz = otv1.getText().toString();
                int otv11 = Integer.parseInt(vz);
                if (sum == otv11) {
                    txt3.setText("Правильно, вы угадали!");
                    im.setImageDrawable(getResources().getDrawable(R.drawable.fon1));
                } else {
                    txt3.setText("Неправильно, правильный ответ: " + sum + ".");
                    im.setImageDrawable(getResources().getDrawable(R.drawable.fon2));
                }
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
        Timer timer = new Timer("change");
        Task task = new Task();
        timer.schedule(task, 2000);
            }
        });
}

class Task extends TimerTask {
    @Override
    public void run() {
         im.setImageDrawable(getResources().getDrawable(R.drawable.fon));
        }
}


Как то так
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы