我嘗試了線程,但android會拋出「CalledFromWrongThreadException:只有創建視圖層次結構的原始線程可以觸及其視圖。」如何顯示視圖3秒鐘,然後隱藏它?
那麼,我該如何等待3秒鐘,然後隱藏視圖,讓GUI響應?
-
A定時器使用另一個線程要麼,所以它不會解決..
我嘗試了線程,但android會拋出「CalledFromWrongThreadException:只有創建視圖層次結構的原始線程可以觸及其視圖。」如何顯示視圖3秒鐘,然後隱藏它?
那麼,我該如何等待3秒鐘,然後隱藏視圖,讓GUI響應?
-
A定時器使用另一個線程要麼,所以它不會解決..
菌種一個單獨的線程休眠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
一個'Message'和一個'Handler'可以做更多的Android-y方法來做同樣的事情,特別是當涉及到UI操縱。 – Dave 2010-07-14 17:39:13
當線程正在休眠時,它仍然使得GUI對我的按鍵不負責任。 – 2010-07-14 18:06:33
@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()一樣。
沒有必要非得視圖引用或睡一個線程:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// do stuff
}
}, 3000);
於Android的啓動畫面簡單的例子,Userful公司給你:[點擊這裏](http://www.androidpeople.com/android-loading-welcome-splash-spash-screen-example「spash screen example」) – Popeye 2012-11-20 09:19:45