2012年8月1日水曜日

カウントダウンタイマーでシングルタップとダブルタップの判定



import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
import android.widget.LinearLayout;

public class CountdownTimerActivity extends Activity {
    /** Called when the activity is first created. */
 private boolean mTimerRunning = false;
 private boolean doubleTapFlag = false;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        LinearLayout listView = (LinearLayout) findViewById(R.id.LinearLayout1);
        
        //ダブルタップの間隔取得
        final int doubleTime = ViewConfiguration.getDoubleTapTimeout();

  listView.setOnTouchListener(new View.OnTouchListener() {
   
   public boolean onTouch(View v, MotionEvent event) {
    Log.i("TAG", "タップされた");

    // 二重起動を防止する
    if (!mTimerRunning) {
     mTimerRunning = true;
     // カウントダウンする
     new CountDownTimer(doubleTime, 1) {
      // カウントダウン処理
      public void onTick(long millisUntilFinished) {
     }
      // カウントが0になった時の処理
      public void onFinish() {
       if( doubleTapFlag ){
        Log.v("LOG", "ダブルタップ");
        doubleTapFlag = false;
       }else{
        Log.i("LOG", "シングルタップ");
       }
       
       mTimerRunning = false;
      }
     }.start();
    }else{
     //ダブルタップ
     doubleTapFlag = true;
    }
    return false;
   }
  });
 }
}

ダブルタップを単に取得したいなら、GestureDetectorクラスで簡単に取得できます。

関連記事

0 件のコメント:

コメントを投稿