2011-08-19 4 views
0

나는 OnClickListenerOnLongClickListener을 모두 구현 한 이미지가 있습니다. OnLongClickListener에서 (ACTION_DOWN)를 누르면 타이머가 시작됩니다. ACTION_UP에서 취소하고 싶습니다.onLongClick ACTION_UP 이벤트를 감지하는 방법은 무엇입니까?

이제이 이미지에 OnTouchListener을 구현하면 정상 클릭에 대해 ACTION_DOWN을 잡습니다. 그리고 긴 클릭 만 잡으려고합니다.

왜 길게 누르지 않습니까? ACTION_UP 이벤트가 발생합니까? 어떻게이 이벤트를 감지하고 타이머를 멈출 수 있습니까?

코드가 필요하면 게시 할 수 있지만 코드에 오류가 없으므로 도움이되지는 않습니다.

추신. 이 긴 누름이 다른 요소의 값을 계속 증가 시키므로 특정 시간 또는 값에서 타이머를 멈출 수 없습니다. 이 증가 과정은 이미지 길게 누르기 ACTION_UP에서만 멈춰야합니다.

답변

9

그냥 OnTouchListener를 사용하고 OnLongClickListener를 잊어 버리십시오. OnTouch()가 전달한 MotionEvent 객체의 모든 정보가 좌표 및 누름 시간을 확인하여 긴 클릭을 감지 할 수 있습니다.

1- 좌표를 확인하려면 ImageView 컨테이너에서 MotionEvent의 getX() 및 getY()를 사용하고 getDrawingRect()를 사용하십시오.

2 눌린 시간을 확인하려면 getEventTime()을 사용하여 ACTION_DOWN에 처음으로 저장 한 다음 ACTION_UP 이벤트에서 시간을 빼서 계산하십시오. 당신은 긴 클릭에 대해 800mS로 추측 할 수 있습니다.

+0

viewpager 안에있는 gridview의 griditem은 어떨까요? 긴 언론이 끝날 때까지 다른 모든 touchevents를 동결시킬 수있는 방법이 있습니까? – ChuckKelly

관련 문제