ImageView - 显示新图像并在1秒后重置 - onClick

时间:2014-01-12 20:44:04

标签: java android imageview

我有一个 ImageView ,最初设置为show(比如说)a.png。现在,当我点击它时 - 我需要它将其图像资源更改为(比如)b.png然后在1000毫秒内恢复为a.png。

  @Override
 public void onClick(View arg0)
 {
    ImageView iView = (ImageView) arg0;
    iView.setImageResource(R.drawable.bpng);
    iView.invalidate();

    Handler delayHandler = new Handler();
    delayHandler.post(new Runnable()
    {
        @Override
        public void run()
        {
            try
            {
                Thread.sleep(1000);
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }

        }
    });

    iView.setImageResource(R.drawable.apng);
 }

根据我在SO问题上所读到的内容 - 无效方法(我也尝试过 postInvalidate )应该提出更新View的请求。但是我注意到上面的代码从未真正显示带有b.png的imageView。

关于如何完成这项工作的任何建议?

1 个答案:

答案 0 :(得分:4)

您需要将行iView.setImageResource(R.drawable.apng);移到run()方法中。

目前,您的run()方法正在等待一秒钟,然后什么都不做。方法流程如下:

setImage <- b.png

postDelayed

setImage <- a.png

1000ms later

run finished