如何设置的图像与延迟
问题描述:
我有一个“活动”三个图像。当单击一个图像时,所有图像将切换到另一个图像。有没有办法让这些开关在图像实际改变之前有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循环的每次迭代中放置这个延迟? 感谢
答
最好的选择不是一个,但你仍然可以尝试CountDownTimer。
http://developer.android.com/reference/android/os/CountDownTimer.html
答
您可以使用handler.postDelayed(Runnable的R,长timeInMillis)。让你的runnable改变图片,然后调用postDelayed()并传递可运行时间和2000时间延迟。
编辑:啊我看到你正在尝试做的。据我所知,你每次都不能进行循环暂停2秒。如果您链接postDelayed()调用,您可以获得相同的效果。刚刚成立的下一可运行并在其上调用postDelayed()的第一个里面,同样从第二个内部的第三个。您将最终获得与每次迭代暂停2秒的for循环相同的功能。
真棒!..这个工作perfectly..thanks – Tobi 2011-05-11 00:27:24
我首先存储图像序列中的阵列,以改变当时我使用倒数计时器真正改变的图像。但是当我将我的间隔设置为少量(小于〜2000毫秒)时,它会错过我阵列中最后的1或2个插槽。你知道这可能是什么原因吗? – Tobi 2011-05-18 01:37:09