0

我正在尝试使用倒数计时器设置具有 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 的计时器,但我收到一条错误消息,说我无法在线程中触摸视图,因为它们不是在线程中构造的

请帮忙谢谢

4

1 回答 1

0

我确定还涉及其他细节,这可能无法解决所有问题,但对于最后一点(“......无法触摸线程中的视图......”),您需要将 Runnable 传递给 Activity.runOnUiThread。在该 Runnable 中,设置图像资源和其他会影响屏幕的内容。

于 2011-05-18T03:06:47.170 回答