GestureDetector.OnGestureListener
onDown() 화면에 손을 붙이는 순간 호출
onShowPress()
onDown보다 길게 약 90ms 정도 손가락 붙이고 있으면 호출
onSingleTapUp() onShowPress보다 더 오래 손을 붙이고 있으면 호출됨
onLongPress()
onSingleTapUp보다 더 길게 클릭하고 있으면 호출
onScroll() 손을 움직이는 동안 호출
onFling() 손을 뗌
손가락을 붙이고 있는 거랑 길게 클릭하고 있는 거랑 무슨 차이인지...흠..
import android.view.GestureDetector;
public class gestureClass implements GestureDetector.OnGestureListener{
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
@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;
}
}
onFling()
e1.getX - e2.getX < 0
오른쪽으로 이동 / 이전 / 오른쪽으로 스와이프
e1.getX - e2.getX > 0
왼쪽으로 이동 / 다음 / 왼쪽으로 스와이프
GestureListner는 구현한다고 바로 실행되지 않는다.
기본적으로 activity는 onTouch이벤트를 호출한다.
그 호출을 더이상 못하게 막고 제스쳐 리스너로 넘겨야한다.
액티비티에서 onTouch를 이벤트를 처음 받을때
return true;로 한다.
그리고 dispatchTouchEvent()를 구현 해야한다.
onTouchEvent메서드 대신 onGestureListner호출 설정