2 myc 100 myc_100 于 2012.12.24 13:07 提问

android中使用按钮来更新UI

使用以下代码想实现:当点击一个按钮后要显示一个图像,两秒后这个图像又变得不可见。

button.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
      firstImage.setVisibility(ImageView.VISIBLE);
      // delay of some sort
      firstImage.setVisibility(ImageView.INVISIBLE);
   }
}

但是运行代码后,点击按钮,图像一直是不可见的。我是不是该用另一种方法来实现这个功能呢?使用handlers还是不对,还有什么方法呢?

3个回答

SunBo_Java
SunBo_Java   2012.12.24 14:19
已采纳

恩,你可以使用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);
}
nana4ever
nana4ever   2012.12.24 16:37

不要让你的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)。

CSDN_Ask
CSDN_Ask   2013.01.08 13:36

调用 imageView's setvisibility方法,需要使用一个 hanlder

Handler handler = new Handler();
handler.post(new Runnable() {
    public void run() {
           image.setVisibiliy(VISIBLE);
           Thread.sleep(200);
           image.setVisibility(INVISIBLE);
    }
});
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!