Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
yaran
1 / 1 / 0
Регистрация: 08.02.2013
Сообщений: 49
1

Одновременно обработать два листнера

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

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

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

Можно ли обработать два ListView в пределах одного activity на android?
Делаю небольшое приложение, которое показывает несколько ListView через...

Что будет, если два разных потока попытаются отправить одновременно одному клиенту два разных пакета
Здравствуйте! Имеется вот такой незамысловатый метод отправки пакетов на сокет...

Обработать два предложения
Пусть даны два предложения, которые оканчиваются точкой и содержат одинаковое...

Как обработать два слеша?
Вот такое условие РНР не понимает: if (!stristr($referer, "//") Два слеша...

Два массива байтов обработать поэлементно операцией and
Помогите пожалуйста два массива байтов обработать по элементах операцией AND в...

3
Valakin
299 / 100 / 15
Регистрация: 21.02.2015
Сообщений: 806
27.01.2016, 08:25 2
Лучший ответ Сообщение было отмечено yaran как решение

Решение

чтобы понять какое событие произошло, то с мультитачем надо использовать getActionMasked.
Индекс касания определяется методом getActionIndex.
Кол-во текущих касаний – getPointerCount
1
Pablito
2810 / 2235 / 753
Регистрация: 12.05.2014
Сообщений: 7,819
Завершенные тесты: 1
27.01.2016, 11:02 3
вангую
в onTouch слушателе надо делать не return true,а false

если не получится - весь код надо видеть
0
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.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2016, 20:06

Два таймера одновременно
Есть функция таймер: void timer(int s,int m,int h){ cout.fill('0');...

Два цикла одновременно
Можно ли сделать 2 цикла, которые будут работать одновременно? Если да, то как?

Два звука одновременно
Сабж:нужно проиграть несколько wav'ов одновременно. Поиск юзал-есть одна такая...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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