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

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

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

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

27.01.2016, 07:40. Просмотров 207. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Одновременно обработать два листнера (Программирование Android):

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

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

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

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

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

два запроса одновременно - Node.js
Проблема человек посылает запрос к node.js допустим перейти в такую-то локацию и все нормально, НО он может послать одновременно...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 731
27.01.2016, 08:25 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
чтобы понять какое событие произошло, то с мультитачем надо использовать getActionMasked.
Индекс касания определяется методом getActionIndex.
Кол-во текущих касаний – getPointerCount
Pablito
2470 / 1915 / 595
Регистрация: 12.05.2014
Сообщений: 6,740
Завершенные тесты: 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.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2016, 20:06
Привет! Вот еще темы с ответами:

Два провайдера одновременно - Сетевое оборудование
Подключены два провайдера. У 1 пользуюсь только локалкой, у 2 локалка и инет(через wi-fi роутер). Проблема в том, что одновременно они не...

Два графика одновременно - Delphi
Здравствуйте. Нужно изобразить 2 графика: y=sqrt(x-1) и y = sqrt(R-x^2)

Два метода одновременно - Java SE
Как в Java выполнять несколько методов одновременно?

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.01.2016, 20:06
Ответ Создать тему
Опции темы

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