使用计时器设置图像

时间:2011-05-18 02:46:44

标签: java android image timer runnable

我正在尝试使用倒数计时器设置延迟600ms的图像,如下所示:

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 :(得分:0)

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