Настройка изображений с таймером - PullRequest
0 голосов
/ 18 мая 2011

Я пытаюсь установить изображения с задержкой 600 мс, используя таймер обратного отсчета следующим образом:

protected void onCreate(Bundle savedInstanceState) {
int order[3];
index=0;
  image1.setOnClickListener(this);

   @Override
   public void onClick(View arg0) 
   {
   order={2,1,3};

   do_switches();
   }

private void do_switches() 
{
   new CountdownTimer(3*600, 600) {

 public void onTick(long millisUntilFinished) {
     switch(order[index]){

    case 1:

        image1.setImageResource(R.drawable.one);
                break;

    case 2:

        image2.setImageResource(R.drawable.two);
                         break;

    case 3:
        image3.setImageResource(R.drawable.three);
                    break;

    }
    index++;

 }

 public void onFinish() {

 }
  }.start();

}

}

Это пример, но в моем реальном коде я использую большие массивы (размером около 50). Моя проблема в том, что таймер обратного отсчета не всегда идет до последнего места в массиве. Иногда работает, но иногда останавливается до достижения последней точки моего массива. Однако, если я увеличу интервал времени до 2000 мс, он всегда работает. Определенно, происходит некоторая обработка, которая задерживает это, но я не ожидаю, что обратный отсчет не сработает только потому, что я сократил интервал. Может кто-нибудь сказать мне, что я могу сделать, чтобы убедиться, что таймер обратного отсчета не останавливается, прежде чем пройти через весь мой массив или есть лучший способ сделать это.

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

Пожалуйста, помогите Спасибо

1 Ответ

0 голосов
/ 18 мая 2011

Я уверен, что есть другие детали, и это может не излечить все, но для последнего бита ("... не может коснуться представлений в потоке ..."), вам нужно передать Runnable в Activity.runOnUiThread.В этом Runnable настройте ресурсы изображения и все остальное, что повлияет на экран.

...