2011-02-10 2 views
10

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

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

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

ответ

6

Прикосновение к событию сначала улавливается в настоящее время в фокусе. Если вы коснулись 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

+1

У меня такая же проблема, т. Е. Сфокусированный вид перемещается, если я касаюсь в любом месте слева на экране, вы можете мне помочь? –

10

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

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

0

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

Смежные вопросы