为什么ImageView无法在SystemClock.sleep()之前更新

时间:2012-04-29 01:11:15

标签: android imageview sleep

我希望在翻转旧图像之后的3秒内在ImageView中显示其他图像。代码:

    OnClickListener oc = new OnClickListener() {
@Override
public void onClick(View v) {
         ImageView iv = (ImageView)v;
         iv.setImageResource(img2_id);
         SystemClock.sleep(3000);
         iv.setImageResource(img1_id);
    }
    }

    myImageView.setOnClickListener(oc);

但它不起作用?那么,我做错了吗?

1 个答案:

答案 0 :(得分:3)

您正在阻止UI线程。因此,在睡眠命令期间,屏幕将不会刷新。您需要的是为更改图像资源的函数安排非阻塞延迟调用。这是一个修改过的代码,可以做这样的事情:

Handler mHandler = new Handler(); /*handler declared in your Activity thread, I assume*/

OnClickListener oc = new OnClickListener() {
    @Override
    public void onClick(View v) {
        ImageView iv = (ImageView)v;
        iv.setImageResource(img2_id);

        mHandler.postDelayed(new Runnable(){
            public void Run(){
                iv.setImageResource(img1_id);
            }
        },3000);

    }
}
myImageView.setOnClickListener(oc);