我有一个 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。
关于如何完成这项工作的任何建议?
答案 0 :(得分:4)
您需要将行iView.setImageResource(R.drawable.apng);
移到run()方法中。
目前,您的run()
方法正在等待一秒钟,然后什么都不做。方法流程如下:
setImage <- b.png
postDelayed
setImage <- a.png
1000ms later
run finished