2012-02-06 111 views
1

我想將按鈕的背景更改爲紅色,然後在調用其他活動之前等待一秒鐘。更改按鈕的背景和睡眠

這是我的代碼:

btn1.setBackgroundColor(Color.RED); 
SystemClock.sleep(1000); 
startActivity(intent); 

的問題是應用程序睡眠一秒鐘,開始活動,但按鈕的顏色沒有變化。我怎樣才能解決這個問題?

回答

2

當您使用 SystemClock.sleep(1000);

處理Looper的主線程將獲得Sleep。

然後,當它返回它首先改變顏色,然後啓動活動。這是一個接一個地完成的,所以你不能看到改變的顏色。

使用處理器postDelayed這將幫助ü運行u需要,並且也沒有被睡眠阻塞主彎針線

0

不,它是設置顏色,但你無法看到。我會解釋你爲什麼看不到。

顏色1秒後設置。但是你在1秒後開始新的活動,所以你無法看到顏色的變化。實際上睡眠暫停線程給定的時間。

要注意到這種效果,請嘗試下面的代碼。

 btn1.setOnClickListener(new View.OnClickListener() {    
      public void onClick(View v) { 
       v.setBackgroundColor(Color.RED); 
       SystemClock.sleep(5000); // color will set after 5 seconds 
      } 
     }); 

我不知道如何解決這個問題。我只是回答這個問題。

+0

謝謝您的回答延遲後的活動。我想嘗試一個while循環,當按鈕的顏色是紅色時會中斷,但我不知道如何檢查。如果試圖使用ColorDrawable類的getColor()方法,但eclipse說這個方法不存在。你知道另一種方法來檢查按鈕的背景顏色嗎? – user1186043 2012-02-06 12:36:21

0

您正在設置睡眠的同一線程上的顏色,因此您的更改不可見,因爲睡眠命令導致UI凍結。

你應該設置顏色,然後產生一個新的線程,等待5秒鐘,然後再啓動其他活動。