2011-09-16 5 views
0

순수 Java에는이 두 가지 이벤트를 처리하는 데 사용할 수있는 MouseInputListener이 있습니다.안드로이드에서 슬라이딩과 클릭을 구별하는 방법은 무엇입니까?

어떻게 안드로이드로 할 수 있습니까?

두 이벤트를 모두 구현하면 다른 하나는 발생하지 않고 하나만 실행됩니다 (onClickListener).

업데이트 :

문제는 손가락 움직임을 감지에 대한 없습니다.

보기가 있습니다 (예 : ImageView). 이보기의 클릭 (이 경우 onClickListener())을 감지하고이보기에서 손가락 움직임 (즉, 누르기, 움직이기 및 손가락 떼기)이 필요합니다.

여기서 문제는 onClickListener()이 호출되고 MotionEvent 처리기가 포착되지 않는 것입니다.

메인 이벤트는 손가락 움직임이어야하고 onClickListener()은 "이보기를 클릭하지 마십시오."라고 말하면 2 가지 이벤트를 구분할 수 있어야합니다.

이 부분이 더 명확합니다. 그들은 모두 View에 잡히면 MotionEvent의를 소비하기 때문에

+1

관련 복제 가능 : http://stackoverflow.com/q/937313/866022 – yoozer8

+0

손가락 터치와 'MotionEvent'를 캡처하고 싶습니까? 아니면 특별히 마우스 입력을 캡처하고 싶습니까? –

답변

0

OnClickListenerOnTouchListener 좀 서로를 방해.

기본적으로 두 가지를 확인하는 단일 OnTouchListener을 작성할 수 있습니다. 인수로서 MotionEvent가 제공됩니다. MotionEvent.getAction()을 통해 조치를 확인하십시오. 이 값이 MotionEvent.ACTION_DOWN이면 (사용자가 손가락을 화면에 대었다). 사용자가 손가락을 약 1 초에 놓으면 동일한 위치 (ACTION_UP) 인 경우이를 클릭으로 해석 할 수 있습니다. 그렇지 않으면 ACTION_MOVE 이벤트로 얻는 위치를 제스처로 해석하십시오.

프레임 워크에는 이미이 해석 작업을 수행하는 클래스가 있습니다. SimpleGestureDetector 클래스를 확인하십시오.이 클래스는 SimpleOnGestureListener입니다. 공통 이벤트에 대한 콜백이 있습니다 (예 : onSingleTapConfirmed()onFling(). OnTouchListener의 MotionEvent를 GestureDetector에 제공하기 만하면됩니다.

+0

고맙습니다. SimpleGestureDetector는 완벽하게 작동합니다. – Igor

+0

기꺼이 도와 드리겠습니다. 도움이 되었다면 이것을 [정답] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)으로 표시하십시오. * (당신이 처음이기 때문에 그 메커니즘을 알지 못할 수도 있습니다) * –

관련 문제