2013-10-11 5 views
0

특정보기의 모든 터치 이벤트에서 콜백을 실행하고 싶습니다. 나는 비슷한 질문을 발견했다 : View.onTouchEvent only registers ACTION_DOWN event에 의해 직접적인 대답은 없다.정상적인 흐름을 방해하지 않으면 서 터치 이벤트에 대한 콜백 수신

true가보고 된 동일한 터치 (예. ACTION_MOVE)에 속하는 onTouch() 다음 추가 이벤트에서 반환하지만, 흐름이 중단되고 정상 이벤트 처리 (예.보기을 누른 상태에서 입력되지 않음) 발생하지 않습니다.

false 또는 super.onTouchEvent이 후 반환되는 경우에만 ACTION_DOWN가보고되고 있지만, 다른없는 행동과 정상적인 처리 (예.보기을 누른 상태에서 진입)가 제대로 발생합니다. 불행히도 onInterceptTouchEvent() 같은 다른 콜백은 잘 호출되지 않습니다.

모든 터치 이벤트 (ACTION_DOWN, ACTION_MOVE 등)에 대해 알림을 받고 정상적인 처리를 방해하지 않을 수 있습니다 (예 : 터치하면 터치해도 올바른 상태가됩니다). 어떻게이 행동을 달성 하는가?

답변

0

당신은 View 특정을 연장하려고이

@Override 
public boolean dispatchTouchEvent(MotionEvent ev) { 
    handleTouch(ev); 
    return super.dispatchTouchEvent(ev); 
} 

같은 dispatchTouchEvent을 덮어 그리고 당신은 정상적인 흐름을 방해하지 않고하고 싶은대로 할 handleTouch을 구현할 수 있습니다.

+1

true 대신 'super.dispatchTouchEvent (ev)'를 반환하면됩니다. – meredrica

+0

당신이 옳습니다. 방금 편집했습니다 –

+0

실제보기가 ACTION_DOWN을 소비하지 않은 경우를 제외하고 ACTION_MOVE도 표시되지 않습니다. 그걸로 무언가를하고 싶다면'super.dispatchTouchEvent (ev);'를 호출하고'true '를 반환해야합니다. –