Регистрация события движения / касания с двумя наложенными представлениями

В настоящее время я пишу игру для Android. У меня есть один обычный GLSurfaceView, в котором я визуализирую свою графику и использую метод public boolean onTouchEvent(MotionEvent me) для регистрации сенсорных входов, например, для поворота камеры. В отдельном классе я программно создаю FrameLayout, который содержит HUD. Это добавляется поверх GLSurfaceView с помощью this.addContentView(FL_HUD, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)). HUD содержит Image View, для которого установлен прослушиватель касаний с .setOnTouchListener, который создает другое событие Motion, которое я могу прочитать.

Оба TouchListeners/MotionEvents работают, поэтому, когда я касаюсь своего изображения, вызывается его TouchListener, когда я касаюсь другого места на экране, вызывается TouchListener основного действия. Но когда я пытаюсь коснуться изображения, касаясь экрана, или пытаюсь коснуться изображения, касаясь экрана, это не работает, или, другими словами, одновременно активен только один сенсорный прослушиватель.

Как мне включить мультитач для двух наложенных видов?


person ProgrammingMachine5000    schedule 21.02.2015    source источник


Ответы (1)


КОГДА вы касаетесь экрана, все касания переходят в одно представление. Это означает, что второй палец не перейдет к другому обработчику касания, а перейдет к тому же обработчику касания, что и первое касание. Лучший вариант — написать один обработчик касания для обоих представлений и самостоятельно провести тестирование нажатия.

person Gabe Sechan    schedule 21.02.2015
comment
Хорошо, ура! У кого-нибудь есть информация о возвращаемых значениях MotionEvent.getX/MotionEvent.getY/MotionEvent.getRawX/MotionEvent.getRawY? Они кажутся мне довольно случайными. - person ProgrammingMachine5000; 23.02.2015
comment
getx и gety — это номера пикселей относительно верхнего левого угла представления. Необработанные значения такие же, но относительно верхнего левого угла экрана. - person Gabe Sechan; 23.02.2015