我有三个图像的“活动”。单击一个图像时,所有图像都将切换到另一个图像。有没有办法让开关在图像实际改变之前有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循环的每次迭代中加上这个延迟? 感谢
答案 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