더블탭을 막고자 여기저기 찾아봤습니다.


1.

public class DoubleTapTest extends Activity{
    private GestureDetector mDoubleTapGesture;

    //아무것도 안하는 제스쳐 리스너
    private OnGestureListener mNullListener = new OnGestureListener() {
        @Override public boolean onSingleTapUp(MotionEvent e) { return false; }
        @Override public void onShowPress(MotionEvent e) {}
        @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return false; }
        @Override public void onLongPress(MotionEvent e) {}
        @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { return false; }
        @Override public boolean onDown(MotionEvent e) { return false; }
    };

    //더블탭 리스너
    private OnDoubleTapListener mDoubleTapListener = new OnDoubleTapListener() {
        @Override public boolean onSingleTapConfirmed(MotionEvent e) { return false; }
        @Override public boolean onDoubleTapEvent(MotionEvent e) { return false; }
        @Override public boolean onDoubleTap(MotionEvent e) {
            
            /*
                여기에 더블탭 이벤트
            */
            return true;
        }
    };

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        /*
            하실 것들 하시고
        */
        mDoubleTapGesture = new GestureDetector(context, mNullListener);    //더블탭 제스쳐 생성
        mDoubleTapGesture.setOnDoubleTapListener(mDoubleTapListener);        //더블 탭 리스너 등록
    }

    @Override
    public boolean onTouchEvent(MotionEvent e){
        if(mDoubleTapGesture != null){

        Log.i("20120403", "더블탭_온터치");

            return  mDoubleTapGesture.onTouchEvent(e);   

        }else{

        Log.i("20120403", "싱글탭_온터치");

        return mThread.touch(e);

        }

    }
}


더블탭 온터치 부분으로만 들어갑니다.


2. 

private final class SimpleGestureListener extends GestureDetector.SimpleOnGestureListener{

public boolean onDoubleTap(MotionEvent e){

Log.i("20120403", "더블탭");

return false;

}

public boolean onDoubleTapEvent(MotionEvent e){

Log.i("20120403", "더블탭 이벤트");

return false;

}

public boolean onDown(MotionEvent e){

Log.i("20120403", "다운");

return false;

}

public boolean onFling(MotionEvent e1, MotionEvent e2, float vX, float vY){

Log.i("20120403", "플링");

return false;

}

public void onLongPress(MotionEvent e){

Log.i("20120403", "롱프레스");

}

public boolean onScroll(MotionEvent e1, MotionEvent e2, float dX, float dY){

Log.i("20120403", "스크롤");

return false;

}

public void onShowPress(MotionEvent e){

Log.i("20120403", "쇼프레스");

}

public boolean onSingleTapConfirmed(MotionEvent e){

Log.i("20120403", "싱글탭 컨펌");

return mThread.touch(e);

}

public boolean onSingleTapUp(MotionEvent e){

Log.i("20120403", "싱글탭업");

return mThread.touch(e);

}

}

private GestureDetector mGestureDetector;

public boolean onTouchEvent(MotionEvent event) {

Log.i("20120403", "온터치 이벤트");

return mGestureDetector.onTouchEvent(event);

}


로그를 찍어서 확인해봤는대


더블탭쪽 이벤트는 일어나지 않고 오히려 롱프래스 이벤트만 일어납니다....


어찌해야 더블탭 이벤트를 막을수 있을지 알려주세요..