Несколько просмотров OnTouch Events

Мы разрабатываем приложение, в котором нам нужно одновременно захватить MotionEvents из нескольких представлений. Когда мы пытаемся это сделать, Android отправляет события только в первый косвенный вид и при одновременном касании другого представления дает нам ACTION_POINTER_DOWN только на первом представлении, даже если координаты указателя находятся за пределами его границ и внутри других представлений,.

Есть ли способ получить события, отправленные на каждый затронутый вид (в отдельных вызовах OnTouch)?

Мы считаем, что перехватывать события касания от родительского представления, а затем вручную отправлять их в каждое представление может работать, но даже если это произойдет, это было бы нецелесообразно для того, чего мы пытаемся достичь. Есть ли более простой способ?

Ответ 1

По крайней мере Android 3.0 добавляет поддержку для разделения событий касания между несколькими видами.

Сплит-события касаются по умолчанию, когда AndroidManifest <uses-sdk> определяет либо android:minSdkVersion="11", либо android:targetSdkVersion="11". Для объяснения см. android: splitMotionEvents и android: windowEnableSplitTouch

Ответ 2

Событие Touch сначала улавливается текущим фокусом. Если вы коснулись 1 вида и "уничтожили" событие и работаете с ним, любые другие события будут отправлены на это представление независимо от того, где вы нажимаете.

Если вы вернете false из вашего touchListener (при этом заявив, что это событие не будет потреблено), он будет делегирован другим представлениям, но в другое отдельное новое событие клика будет отправлено в другое представление.

http://www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2-part-3-understanding-touch-events/1775

http://developer.android.com/guide/topics/ui/ui-events.html

Ответ 3

Хотя это должно работать автоматически с Android SDK 11+, оно не работало для моего приложения. Я пытался захватить штрихи в главном представлении, а также некоторые взгляды, которые рассматривались в основном представлении; в этом случае штрихи были захвачены только видом "уровня", который получил первый штрих. Я реорганизовал структуру представления, чтобы все представления были братьями и сестрами, и теперь они захватывают события, как ожидалось.