티스토리 뷰

onInterceptTouchEvent, dispatchTouchEvent

  1. onTouchEvent에서 View/ViewGroup 또는 해당 하위 항목이 true를 반환하지 않으면 MotionEvent.ACTION_DOWN에 대해서만 dispatchTouchEvent  onInterceptTouchEvent이 (가) 호출됩니다. onTouchEvent에서 true가 없으면 상위 뷰는 뷰에 MotionEvents가 필요하지 않다고 가정합니다.
  2. OnTouchEvent에서 ViewGroup의 자식 중 어느 것도 true를 반환하지 않으면 onTouchEvent에서 ViewGroup이 true를 반환하더라도 MotionEvent.ACTION_DOWN에 대해서만 onInterceptTouchEvent가 호출됩니다.

처리 순서는 다음과 같습니다.

  1. dispatchTouchEvent이 (가) 호출되었습니다.
  2. onInterceptTouchEvent은 (는) MotionEvent.ACTION_DOWN 또는 ViewGroup의 자식 중 하나가 onTouchEvent에서 true를 반환 할 때 호출됩니다.
  3. onTouchEvent은 ViewGroup의 자식에서 처음 호출되며 자식이 true를 반환하지 않으면 View/ViewGroup에서 호출됩니다.

자녀의 이벤트를 비활성화하지 않고 TouchEvents/MotionEvents을 (를) 미리 보려면 두 가지 작업을 수행해야합니다.

  1. dispatchTouchEvent을 재정 의하여 이벤트를 미리보고 super.dispatchTouchEvent(ev);
  2. onTouchEvent을 (를) 재정의하고 true를 반환합니다. 그렇지 않으면 MotionEvent.ACTION_DOWN을 (를) 제외한 MotionEvent을 얻을 수 없습니다.

제스처를 감지하지 않는 한 자녀의 다른 이벤트를 비활성화하지 않고 스 와이프 이벤트와 같은 제스처를 감지하려는 경우 다음과 같이 할 수 있습니다.

  1. 위에서 설명한대로 MotionEvents를 미리보고 제스처를 감지하면 플래그를 설정하십시오.
  2. 자녀가 모션 이벤트 처리를 취소하도록 플래그를 설정하면 onInterceptTouchEvent에서 true를 반환합니다. 다음 MotionEvent.ACTION_DOWN까지 onInterceptTouchEvent가 다시 호출되지 않기 때문에 플래그를 재설정하기 편리한 위치이기도합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

댓글

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음



Total
Today
Yesterday
최근에 달린 댓글