2012-02-06 4 views
1

ボタンの背景を赤に変更してから、1秒間待ってから別のアクティビティを呼び出したいとします。ボタンとスリープの背景を変更する

これは私のコードです:

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

問題は、アプリケーションが1秒間スリープして活動を開始するが、ボタンの色が変化しないということです。これをどうすれば解決できますか?

答えて

2

使用する場合 SystemClock.sleep(1000);

ルーパーを扱うメインスレッドはスリープ状態になります。

その後、最初に色を変更してアクティビティを開始します。遅れることなく次々に行われるので、変更された色を見ることができません。 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

感謝をメインルーパ糸をブロックする必要はありませんし、遅延後の活動を実行するためのuを助ける

使用ハンドラpostDelayed。私は、ボタンの色が赤いときに壊れるwhileループを試したかったのですが、これを確認する方法はわかりません。 ColorDrawableクラスのgetColor()メソッドを使用しようとすると、eclipseはこのメソッドが存在しないことを示します。ボタンの背景色を確認する別の方法を知っていますか? – user1186043

0

sleepコマンドがUIをフリーズさせるため、変更が表示されないように、スリープ中の同じスレッドに色を設定しています。

他のアクティビティを開始する前に、色を設定してから5秒間待機する新しいスレッドを生成する必要があります。