Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Ringov
0 / 0 / 0
Регистрация: 07.03.2015
Сообщений: 4
#1

OnTouch для элементов GridView

27.06.2015, 21:25. Просмотров 320. Ответов 0
Метки нет (Все метки)

Здравствуйте.

Дано:
GridView, наполненный View. Каждый из этих вью, по моей задумке, должен реагировать на четыре вида свайпа (вверх, вниз, влево, вправо) четырьмя различными действиями (код под спойлером).

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
        public boolean onTouch(View v, MotionEvent event) {
 
            int x = (int) event.getX();
            int y = (int) event.getY();
 
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    xDown = x;
                    yDown = y;
                    break;
                case MotionEvent.ACTION_UP:
                    xUp = x;
                    yUp = y;
 
                    int dx = xUp - xDown;
                    int dy = yUp - yDown;
 
                    //Обработка горизонтальных свайпов
                    if (Math.abs(dx) > Math.abs(dy)) {
                        if (dx == 0) {
                            return false;
                        }
                        if (dx > 0) {
                            //Действие 1
                        } else {
                            //Действие 2
                        }
                    }
 
                    //Обработка вертикальных свайпов
                    if (Math.abs(dy) > Math.abs(dx)) {
                        if (dy == 0) {
                            return false;
                        }
                        if (dy > 0) {
                            //Действие 3
                        } else {
                            //Действие 4
                        }
                    }
                    break;
                case MotionEvent.ACTION_CANCEL:
                    Toast.makeText(context,"Cancelled",Toast.LENGTH_SHORT).show();
                    break;
            }
            return true;
        }


История болезни:
Свайп влево-вправо работает на ура. Свайп вверх-вниз работает очень странно: срабатывает только при каких-то минимальных значениях смещения dy (8-10 пикс.). Если делать свайп длиннее - срабатывает событие ACTION_CANCEL.

После длительных размышлений моё предположение таково: мой собственный свайп, задаваемый для вьюшек внутри GridView конфликтует с вертикальным свайпом, отвечающим за прокрутку самого GridView. Причем происходит это даже в той ситуации, когда прокручивать нечего.

Вопрос, думаю, уже понятен: каким образом этот конфликт обойти или, возможно, воспользоваться каким-то иным подходом для реализации задуманного функционала?

Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2015, 21:25
Ответы с готовыми решениями:

OnTouch из активити для View
В активити прописан метод onTouch. Что нужно написать чтобы добавленные View ...

Использование разных onTouch для двух Layout элемента
В одном Layout имеются два дочерних элемента LinearLayout. Как обработать метод...

OnTouch и onLongClick
вот есть ImageButon btnAdd @Override public boolean onTouch(final View...

registerForContextMenu и ontouch
Здравствуйте! Столкнулся с проблемой: при единичном нажатии на экран,...

Не работает метод onTouch
Есть два TextView надо чтобы по нажатию на одно textView в другом появлялся...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2015, 21:25

Вылет onTouch(), перетаскивание
Хочу сделать так, что при перемещении картинки видел ее координаты. В чем...

Программный вызов onTouch
В игре после завершения уровня для перехода в следующий нужно сделать один клик...

OnTouch на элементе меню
как присвоить setOnTouchListener элементу меню?


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

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

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