使用以下代码想实现:当点击一个按钮后要显示一个图像,两秒后这个图像又变得不可见。button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
firstImage.setVisibility(ImageView.VISIBLE);
// delay of some sort
firstImage.setVisibility(ImageView.INVISIBLE);
}
}但是运行代码后,点击按钮,图像一直是不可见的。我是不是该用另一种方法来实现这个功能呢?使用handlers还是不对,还有什么方法呢?
3 回答
呼啦一阵风
TA贡献1802条经验 获得超6个赞
恩,你可以使用Handler的postDelayed方法来实现,且这种做法是线程安全的。
给你个例子:
private final Handler mHandler = new Handler(); private final Runnable runnable = new Runnable() { @Override public void run() { firstImage.setVisibility(View.INVISIBLE); } }; // displayTime就是你要设置控件显示的时间,单位为毫秒 public void showView(long displayTime) { mHandler.removeCallbacks(runnable); firstImage.setVisibility(View.VISIBLE); mHandler.postDelayed(runnable, displayTime); }
炎炎设计
TA贡献1808条经验 获得超4个赞
不要让你的UI线程休眠
final Handler handler = new Handler(); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { firstImage.setVisibility(ImageView.VISIBLE); handler.postDelayed(new Runnable(){ public void run(){ firstImage.setVisibility(ImageView.INVISIBLE); } }, DELAY); } }
这里你应该设置DELAY为 2000 (ms)。
添加回答
举报
0/150
提交
取消