1

在翻转旧图像之后,我想在 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);

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

4

1 回答 1

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);
于 2012-04-29T01:21:57.690 回答