ボタンの背景を赤に変更してから、1秒間待ってから別のアクティビティを呼び出したいとします。ボタンとスリープの背景を変更する
これは私のコードです:
btn1.setBackgroundColor(Color.RED);
SystemClock.sleep(1000);
startActivity(intent);
問題は、アプリケーションが1秒間スリープして活動を開始するが、ボタンの色が変化しないということです。これをどうすれば解決できますか?
ボタンの背景を赤に変更してから、1秒間待ってから別のアクティビティを呼び出したいとします。ボタンとスリープの背景を変更する
これは私のコードです:
btn1.setBackgroundColor(Color.RED);
SystemClock.sleep(1000);
startActivity(intent);
問題は、アプリケーションが1秒間スリープして活動を開始するが、ボタンの色が変化しないということです。これをどうすれば解決できますか?
使用する場合 SystemClock.sleep(1000);
ルーパーを扱うメインスレッドはスリープ状態になります。
その後、最初に色を変更してアクティビティを開始します。遅れることなく次々に行われるので、変更された色を見ることができません。 uはまた、睡眠によってあなたの答えのための
いいえ、それは色を設定していますが、あなたはそれを見ることができません。なぜあなたが見ることができないのかを説明します。
色は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
}
});
この問題を解決する方法はわかりません。私はちょうどこれを知らせるために答えた。
sleepコマンドがUIをフリーズさせるため、変更が表示されないように、スリープ中の同じスレッドに色を設定しています。
他のアクティビティを開始する前に、色を設定してから5秒間待機する新しいスレッドを生成する必要があります。
感謝をメインルーパ糸をブロックする必要はありませんし、遅延後の活動を実行するためのuを助ける
使用ハンドラpostDelayed。私は、ボタンの色が赤いときに壊れるwhileループを試したかったのですが、これを確認する方法はわかりません。 ColorDrawableクラスのgetColor()メソッドを使用しようとすると、eclipseはこのメソッドが存在しないことを示します。ボタンの背景色を確認する別の方法を知っていますか? – user1186043