如何设置延迟图像

时间:2011-05-08 19:36:31

标签: android timer imageview delay

我有三个图像的“活动”。单击一个图像时,所有图像都将切换到另一个图像。有没有办法让开关在图像实际改变之前有2秒的延迟(即下面每个“for循环”中有2秒的延迟)?我试图用计时器做这个,但它实际上并没有延迟我运行我的程序:

protected void onCreate(Bundle savedInstanceState) {
image1.setOnClickListener(this);

@Override
public void onClick(View arg0) 
{
do_switches();
}

private void do_switches() 
{
//loop through all images and change them
for(int j=1 ;j<=3; j++)
{           


 final int curr2=current;
 final Handler handler = new Handler(); 
 Timer t = new Timer(); 
 t.schedule(new TimerTask() { 
       public void run() { 
        handler.post(new Runnable() { 
               public void run() { 

        switch(curr2){

        case 1:

            image1.setImageResource(ImageArray[1]);
                    break;

        case 2:

            image2.setImageResource(ImageArray[2]);
                             break;

        case 3:
            image3.setImageResource(ImageArray[3]);
                        break;

        }
            } 
        }); 
    } 
 }, 2000); 
}

}

我也尝试过使用SystemClock.sleep(2000)而不是计时器,但我也没有工作。我也尝试使用try / catch设置一个没有运气的线程,或者我没有正确实现它。有没有办法在我的for循环的每次迭代中加上这个延迟? 感谢

2 个答案:

答案 0 :(得分:0)

您可以使用handler.postDelayed(Runnable r,long timeInMillis)。使你的runnable改变图片,然后调用postDelayed()并传入runnable和2000延迟时间。

编辑:啊,我知道你要做什么。据我所知,你不可能每次通过2秒钟进行for循环暂停。如果链接postDelayed()调用,则可以获得相同的效果。只需设置下一个runnable并在第一个内部调用postDelayed(),并在第二个内部调用第三个。您最终将获得与for循环相同的功能,每次迭代暂停2秒。

答案 1 :(得分:0)

不是最佳选择之一,但您仍然可以尝试使用CountDownTimer。

http://developer.android.com/reference/android/os/CountDownTimer.html