web-dev-qa-db-ja.com

Androidでハンドラーをタイマーとして使用するにはどうすればよいですか?

_    Handler handler = new Handler();    
    if (v.getId() == R.id.play){    
       handler.postDelayed(new Runnable() {                    
       public void run() {
           play.setBackgroundResource(R.drawable.ilk);
       }
   }, 2000);    
       play.setText("Play");    
}
_

最初に背景を設定し、2秒後、コードはplay.setText("Play");である次の行に続きます。これの代わりに、最初のテキストが表示されます。 2秒後に背景が変化します。

6
Enes

Handler.postDelayedすぐに戻ります。そして次の行が実行されます。指定されたミリ秒後、Runnableが実行されます。

したがって、コードは次のようになります。

void doFirstWork() {
    Handler handler = new Handler();

    if (v.getId() == R.id.play){

       handler.postDelayed(new Runnable() {
           public void run() {
               play.setText("Play");
               doNextWork();
           }
       }, 2000);

       play.setBackgroundResource(R.drawable.ilk);
    }
}

void doNextWork() {
    ...
}
4
nshmura

最初に背景を設定します。その後、ハンドラー内にテキストを設定します。 postDelayedの最後に遅延を設定したため、指定された遅延の直後、または場合によっては2秒後に起動します。

if (v.getId() == R.id.play){
   play.setBackgroundResource(R.drawable.ilk);
   new Handler().postDelayed(new Runnable() {
       public void run() {
           play.setText("Play");
       }
   }, 2000);

}
1
fluffyBatman