У меня есть пользовательская группа ZoomableViewGroup, которая переопределяет onTouchEvent для обработки движений панорамирования/отбрасывания и использует ScaleGestureDetector.SimpleOnScaleGestureListener для обработки жестов масштабирования. Эта ZoomableViewGroup работает нормально, пока я не попытаюсь использовать onTouch в дочерних элементах ViewGroup.
Внутри этой ZoomableViewGroup у меня есть несколько изображений ImageView, которые служат кнопками. Я хотел бы, чтобы функциональность родителя имела приоритет над onTouch детей. В нынешнем виде кажется, что дочерние ImageViews перехватывают сенсорные события и не передают их своему родителю.
Я хотел бы знать, каков хороший метод обеспечения того, чтобы родительская сенсорная функциональность сохранялась по сравнению с детской сенсорной функциональностью.
Любая помощь или предложения будут с благодарностью!
ИЗМЕНИТЬ:
Ваш ответ был чрезвычайно полезным, Джейсон, я думаю, что теперь я начинаю лучше понимать эту ситуацию. Я возился с моими масштабируемыми группами просмотра в методе InterceptTouchEvent, но все еще немного смущен
- вы касаетесь экрана над ImageView внутри моей масштабируемой ViewGroup,
- ViewGroup.onInterceptYouchEvent получает ACTION_DOWN
- я хочу, чтобы моя ViewGroup действовала, ЕСЛИ событие является жестом панорамирования или масштабирования, поэтому я верну 'true' для ACTION_DOWN
- похоже, что когда моя группа просмотра использует событие ACTION_DOWN, она отправляет мой ImageView.onTouch 'ACTION_CANCEL'
- Я хочу, чтобы мой метод ImageView.onTouch реагировал на событие ACTION_UP, если предшествующее ему ACTION_MOVE меньше значения slop.
как мой ImageView должен получить соответствующую информацию ACTION_UP, если он уже получил ACTION_CANCEL от своей родительской ViewGroup?
пожалуйста, поправьте меня, если я тоже неправильно интерпретирую то, что здесь происходит! Еще раз спасибо!
false
из методаonInterceptTouchEvent()
до тех пор, пока это не произойдет. - person corsair992   schedule 29.12.2014