더블탭을 막고자 여기저기 찾아봤습니다.
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); } 로그를 찍어서 확인해봤는대 더블탭쪽 이벤트는 일어나지 않고 오히려 롱프래스 이벤트만 일어납니다.... 어찌해야 더블탭 이벤트를 막을수 있을지 알려주세요..



