Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
yaran
1 / 1 / 0
Регистрация: 08.02.2013
Сообщений: 49
#1

Одновременно обработать два листнера - Программирование Android

27.01.2016, 07:40. Просмотров 202. Ответов 3
Метки нет (Все метки)

Делаю небольшую игру.
При нажатии на левую половину экрана герой двигается влево, при нажатии на правую - вправо. Так же имеется кнопка прыжка. На relativelayout навешан ontouchlistener, он отслеживает нажатия на половину экрана. На кнопке прыжка свой ontouchlistener.
По отдельности они работают шикарно, но как заставить их работать одновременно?
Сейчас, если нажать на кнопку прыжка, то пока ее не отпустишь, нажатия на половину экрана не будут работать. То же самое и наоборот.
Есть ли какая-то возможность обрабатывать нажатия одновременно, не убирая пальцев с экрана?

Применил к relativelayout свойство, вроде ничего не изменилось.
Java
1
android:splitMotionEvents="true"
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2016, 07:40     Одновременно обработать два листнера
Посмотрите здесь:

Можно ли обработать два ListView в пределах одного activity на android? - Программирование Android
Делаю небольшое приложение, которое показывает несколько ListView через ViewFlipper. Для обработки кликов использую найденный на...

Как обработать диалог? - Программирование Android
как сделать так чтобы после открытия диалога он не пропадал по нажатию пальцем в зоне активити которое находится в состоянии onPause после...

Обработать ответ сервера - Программирование Android
Здравствуйте. Яндекс отправляет мне вот такой ответ: This XML file does not appear to have any style information associated with it....

Обработать клик по компоненту - Программирование Android
Здравствуйте. Стоит такая задача, необходимо сгенерировать круг на экране, и в случае нажатия на него выполнить определенные действия, то...

Как правильно обработать onTouchListener - Программирование Android
В моем коде обработчик прикосновений работает как onClickListener. Помогите исправить. Нужно сделать так, чтоб при прикосновении на...

Обработать нажатие на кнопки в уведомлении - Программирование Android
Еще раз здравствуйте. Дело такое. Есть уведомление, в нем две кнопки. Они должны выполнять различные действия (вызов методов)....

Как обработать нажатие ImageView - Программирование Android
Создаю программу на Андроиде. И сразу столкнулся с проблемой. Почему то не получается... Создаю три объекта ImageView, и надо при нажатии...

Обработать событие onBackPressed во фрагменте - Программирование Android
У меня есть фрагмент который запускается через транзакцию и как можно обработать в нем нажатие кнопки back и выполнить определенные...

Обработать любую ошибку не закрывая программу - Программирование Android
Возможно ли (тяжело ли) подобное? В программе сотня методов и возможно допустить ошибку в одной из них. Или не обработать (полениться или...

Не получается обработать долгий клик по TextView - Программирование Android
Здравствуйте! Помогите понять/найти ошибку, пожалуйста! Не могу создать переменную типа TextView...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 729
27.01.2016, 08:25     Одновременно обработать два листнера #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
чтобы понять какое событие произошло, то с мультитачем надо использовать getActionMasked.
Индекс касания определяется методом getActionIndex.
Кол-во текущих касаний – getPointerCount
Pablito
2419 / 1864 / 583
Регистрация: 12.05.2014
Сообщений: 6,604
Завершенные тесты: 1
27.01.2016, 11:02     Одновременно обработать два листнера #3
вангую
в onTouch слушателе надо делать не return true,а false

если не получится - весь код надо видеть
yaran
1 / 1 / 0
Регистрация: 08.02.2013
Сообщений: 49
27.01.2016, 20:06  [ТС]     Одновременно обработать два листнера #4
Цитата Сообщение от Valakin Посмотреть сообщение
чтобы понять какое событие произошло, то с мультитачем надо использовать getActionMasked.
Индекс касания определяется методом getActionIndex.
Кол-во текущих касаний – getPointerCount
Спасибо, почти работает.
Сделал так

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
 relativeLayout.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
                    case MotionEvent.ACTION_DOWN:
                        // тут код ответственный за движение героя
                        break;
case MotionEvent.ACTION_POINTER_DOWN:
                        int ggg = MotionEventCompat.getActionIndex(event);
                        int xx  = (int) MotionEventCompat.getX(event, ggg);
                        int yy = (int) MotionEventCompat.getY(event, ggg);
                        // тут код проверки соответствия координат нажатия и кнопки. и обработка прыжка вверх.
                        break;
В идеале должно быть так:
По нажатию кнопки прыжка герой подпрыгивает вверх, но если нажимать на половины экрана, то он будет в прыжке еще и двигаться в сторону.

А пока так:
При нажатии одним касанием герой двигается, при нажатии дополнительным касанием на кнопку прыжка герой прыгает, но движение из Action_Down прекращается. Можно ли как-то, не прекращая обработку Action_down, обработать еще и Action_pointer_down?

Добавлено через 2 часа 8 минут
Прошу прощения, затупил. Все нормально работает. Спасибо Valankin.
Yandex
Объявления
27.01.2016, 20:06     Одновременно обработать два листнера
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru