2014-12-27 1 views
0

pan/fling 동작을 처리하기 위해 onTouchEvent를 재정의하고 Zoom 제스처를 처리하기 위해 ScaleGestureDetector.SimpleOnScaleGestureListener를 사용하는 사용자 정의 ZoomableViewGroup이 있습니다. 이 ZoomableViewGroup ViewGroup의 하위 onTouch 사용하려고 때까지 제대로 작동합니다.줌이있는 부모 ViewGroup과 자식 ImageView간에 onTouchEvent 및 onTouch를 처리합니까?

이 ZoomableViewGroup 안에는 버튼 역할을하는 여러 개의 ImageView가 있습니다. 나는 부모의 기능이 아이들의 온 터치보다 선례가되기를 바란다. 그것이 그대로 ImageViews 아이가 touchevents를 가로 채고 그것의 부모에게 전달하지 않는 것 같습니다.

부모님의 터치 기능이 자녀의 터치 기능에 유지되도록하는 좋은 방법이 무엇인지 알고 싶습니다.

도움이나 제안을 보내 주시면 대단히 감사하겠습니다.

편집 :

귀하의 응답이 있었다 매우 도움 제이슨, 나는 내가 더 나은 지금이 상황을 이해하기 시작하고 생각합니다. 나는

  • ViewGroup.onInterceptYouchEvent가 ACTION_DOWN 도착, 내 줌이보기 그룹 onInterceptTouchEvent 방법 장난,하지만 나는 여전히 약간
    • 당신이 내 줌이 가능한 뷰 그룹의 내부 이미지 뷰를 통해 화면을 터치 혼동 한
    • 난 이벤트가 팬 또는 줌 제스처 경우 내 뷰 그룹 행동하려는, 그래서 ACTION_CANCEL '
    • '
    • 가 내 뷰 그룹이 ACTION_DOWN 이벤트를 소비 할 때, 내 ImageView.onTouch를 보내는 것으로 보인다 true'for ACTION_DOWN '돌아갑니다 내 ImageView.onTouch를 만났 으면합니다. hod는 ACTION_MOVE가 선행 값보다 작 으면 ACTION_UP 이벤트에 응답합니다.

    부모님 ViewGroup에서 ACTION_CANCEL을 받으면 내 ImageView에서 관련 ACTION_UP 정보를 얻는 방법은 무엇입니까?

    내가 여기서 무슨 일이 일어나고 있는지 해석하고 있다면 나에게 알려주십시오! 다시 한번 감사드립니다!

  • +1

    터치 이벤트가 slop 값을 지나쳐 드래그 된 후에 만 ​​터치 이벤트를 가로 채길 원한다면, 그때까지'onInterceptTouchEvent()'메소드에서'false'를 리턴해야합니다. – corsair992

    답변

    1

    기본 아이디어는 부모보기에서 onInterceptTouch을 덮어 쓰고 자식보기에 터치를 전달할 것인지 (반환 false) 또는 실제로 부모보기가 터치를 가로 채거나 소비하도록 할 것인지에 대한 논리를 제공하는 것입니다. return true). 논리는 공간적 일 수 있습니다 (부모보기의 가장자리는 특수하지만 내부는 아님) 또는 몸짓 (아마도 수평 스 와이프는 상위 뷰 수준에서 트리거를하고 하위 스 와이프는 하위 뷰 수준에서 트리거합니다. 간단한 탭은 자식 버튼으로 전달되지만 두 손가락 동작은 부모에 의해 소비됩니다.

    +0

    조금 더 도와 주셔도 괜찮 으면 제 질문을 편집했습니다. 다시 Jason에게 고마워! –

    +0

    해적이 맞다고 생각하지만 혼란 스럽습니다. 그의 제안이 도움이되지 않으면'onInterceptTouch()'메소드를 게시해라. –