2010-12-19 4 views
1

終了シーケンス以外の私のAndroid Appは正常に動作します。そのゲームと終了時に画面がスコアを示していますAndroidでGUIを遅くする

TextView allscores = new TextView(this); 

allscores.setText("Your score: "+ mypoints); 

次の私は、数秒間の減速へのGUIは、ユーザが情報を取り込むための時間を持ってほしいです。たぶん2〜3秒で問題ありません。

try { 
       Thread.sleep(3000); 

      } catch (InterruptedException e) { 

       e.printStackTrace(); 
      } 

          layout.removeAllViews(); 

私はスレッドプログラミングに慣れています。このすべてはUIスレッドで行われ、他のスレッドは実行されていません。 次の私は、最終的なスプラッシュ画面のエンディングに入れる:

AnView animator = new AnView(this); 

      layout.addView(animator); 

AnViewビューの私自身の拡張機能です。

すべてが素晴らしいです。問題はスレッドが最終スコアを表示せずに3秒間スリープ状態になることです。どうしてか分かりません。私は寝る前に最終スコアを表示しない理由は分かりません。それは実際には空白になり、すべてのビューを削除してから眠ったことを示します。

+0

はたぶん、この質問のヘルプあなたに答えます。 com/questions/4203579/sleep-command-for-android – Curd

答えて

3

UIスレッドをスリープすると、テキストの変更が表示されるレイアウトや描画操作が妨げられるため、スコアが表示されません。 UIスレッドでスリープしないでください。

このために新しいスレッドを使用することは過剰です。ハンドラとpostDelayedメソッドを使用して、遅延の後に何かが起こるようにします。あなたは、後で何かをしたいとき

private final Handler mHandler = new Handler(); 

その後

他の人が指摘したように
mHandler.postDelayed(new Runnable() { 
    public void run() { 
     doDelayedThing(); 
    } 
}, 3000); 
1

メインのUIスレッドをスリープ状態にすることはお勧めできません。

新しいスレッド(新しいRunnable(){ //ここで動作させる });

また、スコアにトーストポップアップを使用してみることもできます。

+0

本当ですか?私はUIのスレッドでGUIプログラミングの仕事のほとんどを行うことをお勧めしました。それを眠らさない理由はありますか? –

+1

"シングルスレッドモデル"について語るときにいくつかの行を読んでくださいhttp://developer.android.com/resources/articles/painless-threading.html私はあなたがUIスレッドを眠っていると思っています。ビューを表示します。 – Realn0whereman

+0

リスナーを使用してユーザーからのキーを聞くだけで、スプラッシュ画面に進むのはなぜですか?そうすれば、ユーザーはスコアを見る必要があるすべての時間を管理することができます。また、ジョブのリスナーだけを使用しているので、常に同じ応答を維持しながら同じスレッドを使用できます。 –

1

また、タイマーを使用して3秒待つこともできます。これにより、時間がなくなった後に新しいスレッドが開始されます。

Timer timer = new Timer(); 
timer.schedule(new TimerTask() { 
    @Override 
    public void run() { 
       AnView animator = new AnView(this); 
       layout.addView(animator); 
    } 
}, 3000); 
関連する問題