올해는 머신러닝이다.
GestureDetector 관한 설명[펌] 본문
FROM : http://cafe.naver.com/sunschool.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=4394&
일반적으로 터치 이벤트는 down-move-up 단계를 거치면서 사용자의 동작을 감지할 수 잇다. 이런 사용자의 조합된 모션(제스쳐)를 쉽게 판별할 수 있도록 안드로이드는 GestureDetector 인터페이스를 제공하고 있다.
GestureDetector는 두가지의 Listener를 가지고 있다.
interface GestureDetector.OnDoubleTapListener // 두번 터치 했을때
interface GestureDetector.OnGestureListener // 일반적인 제스쳐
위의 두가지를 다가지고 있는 클래스가 GestureDetector.SimpleOnGestureListener 이다.
이클래스를 상속받으면 모든 Gesture를 다 사용할 수 있다.
사용방법:
GestureDetector gd=new GestureDetector(this,new SimpleGestureListener());
gd.onTouchEvent(event); // 감시할 MotionEvent를 아규먼트로 설정하여 GestureDetector를 설정한다.
각 제스쳐 이벤트를 처리하는 메서드들
case1: 아주 살짝 터치하게 되면 onDown onSingleTapUp <- 30~60ms 후에 손이 떨어지면 발생
onSingleTabConfirmed <- onDown 이벤트 발생후 300ms 안에 onDown 이벤트가 다시 발생하지 않을때 발생
case2: 살짝 터치하게 되면 onDown onShowPress <- case1보다 조금 길게, 90-100ms 정도 터치되면 발생 onSingleTapUp <- 172ms 이후에 손을 떼면 발생
onSingleTabConfirmed <- onDown 이벤트 발생후 300ms 안에 onDown 이벤트가 다시 발생하지 않을때 발생 case3: 약간 길게 터치 되면 onDown onShowPress <- 100ms 정도 터치되면 발생 onSingleTapUp <- 300ms 이후 손을 떼게 되면 onSingleTabConfirmed는 발생하지 않는다.
case4: 아주 길게 터치 되면 onDown onShowPress <- 100ms 정도 터치되면 발생 onLongPress <- 590~600ms 정도에 발생. 이때 onSingleTabUp은 발생하지 않는다. case4: 두번 터치 하게 되면 onDown onSingleTabUp onDoubleTab <- onSingleTabConfirmed가 발생하기 전에 다시 onDown 이벤트가 들어오게 되면 발생 onDown <- onDoubleTab 이벤트보다 빨리 들어올 수 도 있지만 일반적으로 늦게 들어온다.
case5: 두번 터치하게 되면 onDown
onSingleTapUp
onDoubleTapEvent <- onSingleTapConfirmed가 발생하기전에 다시 onDown 이벤트가 들어오게 되면 발생
onDown <- 이건 onDoubleTap보다 먼저 들어올수도 늦게 들어올 수 도 있다.
onDoubleTapEvent <- 첫번째 DoubleTapEvent는 ACTION_DOWN, 이것은 ACTION_UP onDoubleTap과 onDoubleTapEvent와의 차이는 DOWN,NOVE,UP 이벤트까지 모두 캐치된다는 점이다.
case6: 스크롤 onDown onScroll <- 최소 30ms 이후부터 onScroll 이벤트가 발생할 수 있으며, 플링시키지 않고 살며시 손을 떼면
끝까지 onScroll 이벤트가 연속으로 발생한다.
case7: 플링
onDown onScroll
onFling <- 스크롤과 비슷하지만 마지막에 손가락을 약간 튕기게 되면 플링으로 인식된다.
|
[사용코드예제]
package kim.android.test; import android.app.Activity;
public class GestureTestActivity extends Activity implements OnGestureListener {
private GestureDetector gd;
// 터치하려고 손을 대기만 해도 발생되는 이벤트, 모든 제스쳐의 시작
// 드래그하다 띄면 호출됨.
// 길게 누르면 호출됨(약 590~600ms 정도 누를때 호출됨) } }
// 한번 터치하고 다음에 다시 터치 이벤트가 들어오지 않았을때, } |
'Android > Tip&Tech' 카테고리의 다른 글
image를 canvas이용해서 그리기 (0) | 2011.05.11 |
---|---|
갤러리를 이용한 페이지 컨트롤 구현 (0) | 2011.05.11 |
Android] intent 사진찍고 결과받기 (0) | 2011.05.06 |
http://blog.naver.com/biboi99?Redirect=Log&logNo=90108496796 (0) | 2011.05.04 |
애플 푸시서버 사용시 구동되는 서버쪽 (0) | 2011.05.04 |