Android:用按钮更新UI



所以我有一些简单的代码,但它似乎不工作。有什么建议吗?

我只是想要一个图像显示后,按钮被按下,然后在2秒后变得不可见。

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

图像永远不会显示,它总是保持不可见,我应该以另一种方式实现这个吗?我试过处理者…但它没有工作,除非我做错了。

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

那么,您需要在两行之间添加延迟。使用线程或计时器来完成此操作。

点击按钮启动一个线程。在run方法中,将ImageView的可见性更改为可见,然后将线程休眠n秒,然后将其更改为不可见。

要调用imageView的setvisibility方法,这里需要一个处理程序。

<>之前Handler Handler = new Handler();处理程序。post(new Runnable() {公共无效运行(){image.setVisibiliy(可见);thread . sleep (200);image.setVisibility(看不见的);}});

我知道这个问题已经有答案了,但是我想我应该为那些喜欢我的人添加一个答案,偶然发现这个类似的结果,其中延迟是由一个过程而不是"睡眠"引起的

button.setOnClickListener(new OnClickListener() {
   public void onClick(View v) {
      firstImage.setVisibility(ImageView.VISIBLE);
      // Run the operation on a new thread
      new Thread(new Runnable(){
            public void run(){
                 myMethod();
                 returnVisibility();
            }
      }).start();
   }
}
private void myMethod() {
    // Perform the operation you wish to do before restoring visibility
}
private void returnVisibility() {
    // Restore visibility to the object being run on the main UI thread.
    MainActivity.this.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            firstImage.setVisibility(ImageView.INVISIBLE);
        }
    });
}

相关内容

  • 没有找到相关文章

最新更新