2012-03-20 6 views
0

私は、レイアウトの下部にタブのような構造を示すレイアウトに取り組んでいます。私はダブルタップで表示し、5秒後にそれを隠す必要があります。だから私はこのカウントダウンタイマーを使用しています:アンドロイドのcountdowntimerにエラーがありますか?

public void timer() 
{ 
    cdt=new CountDownTimer(5000,1000) { 

     @Override 
     public void onTick(long millisUntilFinished) { 

      System.out.println("Timer Working"+millisUntilFinished+""); 

     } 

     @Override 
     public void onFinish() { 

      System.out.println("Finished"); 
      main =(LinearLayout)findViewById(R.id.parent); 

      ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams)main.getLayoutParams(); 
      mlp.height=420; 

      set_up_views(); 
      find_module(); 
      tl.setVisibility(View.INVISIBLE); 


     } 
    }.start(); 

} 

しかし、私はこのタイマーを停止して再起動する方法はわかりません。どのようにできるのか?

答えて

1

このケースでは、CountDownTimerを使用しないことをお勧めします。

使用Handler.postDelayed(Runnable runnable, long delay)

public class yourActivity extends Activity 
{ 
    public Handler handler = new Handler(); 


    ... 


    public void hideAfter5Sec() 
    { 
     handler.postDelayed(new Runnable() 
     { 
      View view = findViewById(view_to_hide); 
      view.setVisibility(View.INVISIBLE); 
     }, 5000); 

    } 
} 

postDelayedは5秒後にそのコードを実行します。

EDITED:

postDelayedは)(Lopper.loopて5秒後に一度だけ呼び出します。 hideAfter5Sec()を複数回呼び出すと、postDelayedを複数回呼び出すだけです。

複数のhideAfter5Sec()呼び出しがある場合は、hideAfter5Sec()が隠しているだけなので間違いはないと思います。そうすれば、あなたの意見は隠されます。

hideAfter5Sec()の最後の呼び出しでのみ非表示にしたい場合は、このバリアントを使用してください。

public class yourActivity extends Activity 
{ 
    public Handler handler = new Handler(); 
    public long lastHideAfter5Sec = 0L; 

    ... 


    public void hideAfter5Sec() 
    { 
     lastHideAfter5Sec = System.currentTimeMillis(); 
     handler.postDelayed(new Runnable() 
     { 
      if(System.currentTimeMillis() - lastHideAfter5Sec < 5000) 
       return; 
      View view = findViewById(view_to_hide); 
      view.setVisibility(View.INVISIBLE); 
     }, 5000); 

    } 
+0

しかし、これも何の問題もなく実行し続けます。どのように私は停止し、開始から再開することができますか? – Navdroid

+0

私の編集を参照してください –

関連する問題