myc_100
myc_100
2012-12-24 05:07
采纳率: 72%
浏览 3.0k
已采纳

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
    booooo­ 2012-12-24 06: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 08: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
    问答小助手 2013-01-08 05: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);
        }
    });
    
    点赞 评论

相关推荐