Подтвердить что ты не робот

Функция сна в программе Android

У некоторых проблем с моей программой спать То, что я пытаюсь сделать, - это когда btnStart нажата, сначала произвольно задает изображения на 12 ImageButtons Затем я хочу, чтобы он приостановился на 5 секунд, а затем изменил первый ImageButton на другое изображение

Мой код выглядит так, прямо сейчас он приостанавливается, когда кнопка нажата...

       btnStart.setOnClickListener(new View.OnClickListener() {
        @Override

        public void onClick(View v) {
            // TODO Auto-generated method stub

            Collections.shuffle(pic);
            int time=1;
            press=true;

            pic.get(0).setImageDrawable(getResources().getDrawable(R.drawable.memgreen));
            pic.get(1).setImageDrawable(getResources().getDrawable(R.drawable.memgreen));
            pic.get(2).setImageDrawable(getResources().getDrawable(R.drawable.memred));
            pic.get(3).setImageDrawable(getResources().getDrawable(R.drawable.memred));
            pic.get(4).setImageDrawable(getResources().getDrawable(R.drawable.memblue));
            pic.get(5).setImageDrawable(getResources().getDrawable(R.drawable.memblue));
            pic.get(6).setImageDrawable(getResources().getDrawable(R.drawable.memwhite));
            pic.get(7).setImageDrawable(getResources().getDrawable(R.drawable.memwhite));
            pic.get(8).setImageDrawable(getResources().getDrawable(R.drawable.mempurple));
            pic.get(9).setImageDrawable(getResources().getDrawable(R.drawable.mempurple));
            pic.get(10).setImageDrawable(getResources().getDrawable(R.drawable.memyellow));
            pic.get(11).setImageDrawable(getResources().getDrawable(R.drawable.memyellow));

            try {
                Thread.sleep(5000);

                pic.get(0).setImageDrawable(getResources().getDrawable(R.drawable.coin));

            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
     }
  });
4b9b3361

Ответ 1

Ну, если вы хотите, чтобы пользовательский интерфейс оставался отзывчивым, вы не можете заблокировать поток пользовательского интерфейса с помощью Thread.sleep.

Создайте новый поток, затем спать. После сна запустите метод изменения вида, отображаемого в потоке пользовательского интерфейса.

new Thread(new Runnable() {
    @Override
    public void run() {
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                pic.get(0).setImageDrawable(getResources().getDrawable(R.drawable.coin));
            }
        });
    }
}).start();