2017-10-14 5 views
-3

私は親レイアウトとして相対レイアウトを持っています。誰かが勝利したときにボックスを表示するために、Linear Layout(Vertical)を追加しました。私はボックスの可視性(線形レイアウト)を数秒遅らせる必要があります。誰も私に教えてもらえますか、どうすればそれを行うことができますか? ここのTextViewは線形レイアウト内にあります。ボタンをクリックした後に線形レイアウトの可視性を遅らせる方法はありますか?ここに私のコードです:

if(gameState[winningPosition[0]] == 0) 
       { 

        winner = "Jesse Pinkman"; 

       } 

       TextView winnerMessage = (TextView) findViewById(R.id.winnerMessage); 

       winnerMessage.setText(winner + " has won!"); 

       LinearLayout layout = (LinearLayout) findViewById(R.id.playAgainLayout); 


       layout.setVisibility(View.VISIBLE); 

      } 

答えて

0

これを試してください。

int DELAY_TIME = 1000; 
new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     // doing something here 
     layout.setVisibility(View.VISIBLE); 
    } 
},DELAY_TIME); 
0

あなたはlayout.setVisibility(View.VISIBLE);の代わりにこのコードを使用することができます:ここ

final Handler handler = new Handler(); 
      handler.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        layout.setVisibility(View.VISIBLE); 
       } 
      }, 3000); 

3000は、ミリ秒で書かれた3秒です。必要に応じて変更することができます。

+0

それは魅力のように働きました!これが実際にどのように機能するのか教えていただけますか?ハンドラーは何をしていますか? – Aakash

+0

ハンドラは、基本的にメッセージまたは実行可能ファイルをキューに追加し、指定した遅延が完了した後にのみ実行に戻します。それは、メッセージ待ち行列が準備完了であるときに実行されるメッセージまたは実行可能ファイルをスケジュールするか、またはそれに対して遅延時間または絶対時間を要する。それは、postDelayed()、post()、postAtTime()などの多くのメソッドを持っています。 –

0

あなたはHandler

を使用する必要がありますAハンドラを使用すると、スレッドのメッセージキューに関連付けられたメッセージとのRunnableオブジェクトを送信して処理することができます。各Handlerインスタンスは、単一のスレッドとそのスレッドのメッセージキューに関連付けられています。新しいHandlerを作成すると、それを作成しているスレッドのスレッド/メッセージキューにバインドされます。その時点から、そのメッセージキューにメッセージと実行可能ファイルを配信し、メッセージから出てくるように実行しますキュー。

サンプルコードは

new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     // perform your action here 
     layout.setVisibility(View.VISIBLE); 
    } 
},1000);// delay times milliseconds 
関連する問題