2017-09-12 1 views
1

활동 내에서 모든 터치 이벤트를 가로 채고 이벤트 소비자를 감지하는 방법은 무엇입니까? 단순화를 위해 다음과 같은 모든 이벤트를 기록해야한다고 가정합니다 : ImageView -> onLongClick().모든 터치 이벤트를 가로 채고 소비자를 감지하는 방법

실제 문제는 실제로 이벤트 뷰어 상단에 오버레이를 추가 할 수있는 모든 이벤트를 가로 채거나 해당 동작에서 dispatchTouchEvent(MotionEvent)을 무시하지만 이벤트 소비자를 감지하는 것입니다. 그러나 그러한 이벤트의 소비자를 어떻게 감지 할 것인지 잘 모릅니다.

답변

0

Activity에서 dispatchTouchEvent를 재정의하면 모든 이벤트가 Activity에 의해 차단됩니다.

이미이 활동을 보았으므로이 활동의 ​​모든보기에는 메시지가 표시되지 않습니다.

나는 왜 이것을하고 싶은지 모르지만, 배우고 싶거나 뭔가를 원한다면, 당신은 안드로이드 뷰 이벤트에 대해 읽을 수 있습니다.

+0

'dispatchTouchEvent'를 재정의하고 슈퍼 구현을 호출하면 어린이가 이전과 같이 이벤트를 가져오고 이벤트를 기록 할 수 있습니다. –

0

여기에 my old answer입니다. 이 액티비티에이 이벤트를 처리하는 하위 뷰가 없을 때 onTouchEvent(MotionEvent) 메서드 액티비티이 호출됩니다. 따라서 onTouchEvent(MotionEvent)오버레이보기 (중요 :이 방법에서는을 반환해야 함)을 재정의해야합니다.

+0

좋아,하지만 터치 이벤트를 소비하는보기를 감지하는 방법은 무엇입니까? 오버레이보기가 맨 위에있는 경우 –

+0

이 뷰의'onTouchEvent (MotionEvent)'메소드 만 오버라이드한다. ('return true; '를 기억하자. 오버레이 뷰는 다른 객체의'MotionEvent'와'onTouchEvent (MotionEvent)'메소드가 호출된다는 의미이다. –

+0

여기서 중요한 것은 원래 이벤트 전파를 방해하지 않기 때문에 어린이의 onTouchEvent (MotionEvent)를 확실히 호출하기를 원합니다. –

관련 문제