如何显示视图3秒钟,然后隐藏它?

问题描述:

我尝试了线程,但android会抛出“CalledFromWrongThreadException:只有创建视图层次结构的原始线程可以触及其视图。”如何显示视图3秒钟,然后隐藏它?

那么,我该如何等待3秒钟,然后隐藏视图,让GUI响应?

-

A定时器使用另一个线程要么,所以它不会解决..

+0

于Android的启动画面简单的例子,Userful公司给你:[点击这里](http://www.androidpeople.com/android-loading-welcome-splash-spash-screen-example“spash screen example”) – Popeye 2012-11-20 09:19:45

菌种一个单独的线程休眠3秒钟然后调用runOnUiThread隐藏视图。

Thread thread = new Thread() { 
     @Override 
     public void run() { 
      try { 
       Thread.sleep(3000); 
      } catch (InterruptedException e) { 
      } 

      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        // Do some stuff 
       } 
      }); 
     } 
    }; 
    thread.start(); //start the thread 
+2

一个'Message'和一个'Handler'可以做更多的Android-y方法来做同样的事情,特别是当涉及到UI操纵。 – Dave 2010-07-14 17:39:13

+0

当线程正在休眠时,它仍然使得GUI对我的按键不负责任。 – 2010-07-14 18:06:33

+0

@Dave我想了解更多关于.. – 2010-07-14 18:07:34

还有一个更简单的方法来做到这一点:使用View.postDelayed(runnable, delay)

View view = yourView; 
view.postDelayed(new Runnable() { 
     public void run() { 
      view.setVisibility(View.GONE); 
     } 
    }, 3000); 

这不是很精确:可以隐藏在3.5或3.2秒,因为它张贴到UI线程的消息队列。

使用post()或runOnUiThread()就像setTimeout()一样。

+0

好看又简单!谢谢.. – 2012-01-17 11:50:34

+4

我想它应该postDelayed而不是后 – marcinj 2013-01-30 14:26:01

+1

+1因为它比使用'wait'或'sleep'少麻烦。但是你有一个错字(它的'Runnable(){...}',并且有'''丢失)请修复它,这样你可以得到更多的提示。还提到'runOnUithread'。接下来会发生什么,因为我对于细节有些迷恋,但是也许在某些句子中正确使用了英语? (别杀我!))。我只是说因为我认为这应该是被接受的答案。 – acrespo 2013-10-09 17:05:00

没有必要非得视图引用或睡一个线程:

new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      // do stuff 
     } 
    }, 3000);