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

Чувствительность MotionEvent.ACTION_MOVE

08.03.2016, 13:30. Просмотров 938. Ответов 7
Метки нет (Все метки)

Здравствуйте! В SurfaceView сделал тайлы, у них нужно обрабатывать нажатия и перемещение. Проблема в том, что MOVE слишком чувствителен и нажать на тайл крайне сложно. Как уменьшить чувствительность ACTION_MOVE?

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
@Override
    public boolean onTouchEvent(MotionEvent event)
    {
        int x = (int)event.getX()/100;
        int y = (int)event.getY()/100;
 
        switch(event.getAction())
        {
            case MotionEvent.ACTION_DOWN:
                isMove = false;
                return true;
            case MotionEvent.ACTION_UP:
                if(!isMove && x<horCount && y<verCount)
                    go[y][x].OnClick();
                return false;
            case MotionEvent.ACTION_MOVE:
                isMove = true;
                if(x<horCount && y<verCount) {
                    go[y][x].SetX((int) event.getX());
                    go[y][x].SetY((int) event.getY());
                }
                return true;
 
        }
        return super.onTouchEvent(event);
    }
//horCount количество столбцов
//verCount количество строк
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2016, 13:30
Ответы с готовыми решениями:

Обработка перемещения объекта на экране - MotionEvent.ACTION_MOVE
Когда перемещаю картинку к краю экрана, то её размер уменьшается, а после...

Обработка MotionEvent
Пишу пытаюсь писать калькулятор. Имеются дцать кнопок для ввода. По три...

Задержка отрисовки Canvas. MotionEvent
Здравствуйте. Написал простейшую программу рисующую жёлтую точку при касании...

OnTouch MotionEvent в андроид выполняется только один раз
Так вот сам вопрос: MotionEvent.ACTION_UP выполняется только первый раз, что...

Чувствительность акселерометра
Всем доброго дня, возможно кто то сталкивался с такой проблемой как...

7
Pablito
2810 / 2235 / 753
Регистрация: 12.05.2014
Сообщений: 7,819
Завершенные тесты: 1
08.03.2016, 14:09 2
непонятно что имеется ввиду под
Цитата Сообщение от GSerge Посмотреть сообщение
Проблема в том, что MOVE слишком чувствителен и нажать на тайл крайне сложно. Как уменьшить чувствительность ACTION_MOVE?
мне непонятно потому что я сам писал программу в которой надо было таскать по экрану маленькие квадратики
и никаких сложностей с тыканием и перетаскиванием не возникало
сначала делал так же - через onTouch, потом переделал через setOnDragListener, примеров полно в инете, но drag&drop подходит не в каждой ситуации
0
GSerge
0 / 0 / 0
Регистрация: 07.11.2014
Сообщений: 84
08.03.2016, 14:45  [ТС] 3
Цитата Сообщение от Паблито Посмотреть сообщение
непонятно что имеется ввиду
Паблито, Когда на устройстве нажимаешь пальцем. Чуть чуть передавил, площадь соприкосновения увеличилась, пиксели сместились и запускается событие при MOVE. Чтобы запустилось UP нужно вообще идеально нажать и отжать пиксель в пиксель, при этом чтобы палец не дрогнул. даже со стилусом сложно вызвать UP

Про чувствительность: хотелось бы увеличить количество смещения пикселей для запуска MOVE. т.е. нажал -> подвинул на 10 пикселей и запустилось событие MOVE, а если подвинул на 9 и меньше пикселей, то событие UP
0
Mikalai
264 / 240 / 95
Регистрация: 11.01.2015
Сообщений: 671
08.03.2016, 14:50 4
Лучший ответ Сообщение было отмечено GSerge как решение

Решение

GSerge, это нормальное явление. Это можно программно самому регулировать.

Не по теме:

видно ты ещё с гироскопом не пробовал работать ))))

1
Pablito
2810 / 2235 / 753
Регистрация: 12.05.2014
Сообщений: 7,819
Завершенные тесты: 1
08.03.2016, 15:08 5
Лучший ответ Сообщение было отмечено GSerge как решение

Решение

так сделать ведь можно?
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
        View view = findViewById(R.id.awesomeView);
        view.setOnTouchListener(new View.OnTouchListener() {
            private final float THRESHOLD = 30; 
            private float origX;
            private float origY;
 
            @Override
            public boolean onTouch(View v, MotionEvent e) {
                switch (e.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        origX = e.getX();
                        origY = e.getY();
                        break;
                    case MotionEvent.ACTION_UP:
                        float deltaX = Math.abs(e.getX() - origX);
                        float deltaY = Math.abs(e.getY() - origY);
                        if (deltaX > THRESHOLD || deltaY > THRESHOLD) {
                            Log.i("***", "сдвинули неслабо");
                        } else {
                            Log.i("***", "сдвинули в пределах допустимого");
                        }
                        return true;
                }
                return false;
            }
        });
1
GSerge
0 / 0 / 0
Регистрация: 07.11.2014
Сообщений: 84
08.03.2016, 15:35  [ТС] 6
Цитата Сообщение от Паблито Посмотреть сообщение
так сделать ведь можно?
Паблито, так будет работать только когда палец отпускают.

В двух словах я хочу сделать !двигающуюся кнопку! Чтобы при клике, кнопка не двигалась. А при движении - не кликалась.

Добавлено через 3 минуты
Хотя... этот код можно в ACTION_MOVE добавить и по идее должно работать)
Цитата Сообщение от Паблито Посмотреть сообщение
Java
1
2
3
4
5
6
7
8
float deltaX = Math.abs(e.getX() - origX);
float deltaY = Math.abs(e.getY() - origY);
if (deltaX > THRESHOLD || deltaY > THRESHOLD) {
 Log.i("***", "сдвинули неслабо");
 } else {
 Log.i("***", "сдвинули в пределах допустимого");
 }
 return true;
Паблито, Спасибо! =)
0
_Night_Scream_
81 / 78 / 11
Регистрация: 08.08.2013
Сообщений: 647
09.03.2016, 11:42 7
GSerge, это делается с помощью onClick и onLongClick, никаких Math.abs....
drag&drop решает вашу задачу на корню, всё сделано до вас.
0
Pablito
2810 / 2235 / 753
Регистрация: 12.05.2014
Сообщений: 7,819
Завершенные тесты: 1
09.03.2016, 11:48 8
drag&drop гимор + не всем нравится внешний вид полупрозрачного ShadowBuilder-а
если это все решается на onClick и longclick проведи мастеркласс - приведи пример, если там все так красиво с люди и я будут благодарны
0
09.03.2016, 11:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2016, 11:48

Чувствительность к регистру
Всем привет, вопрос следующий, как собственно убить чувствительность? есть...

Чувствительность к регистру
Написал программу, которая из нескольких слов выбирает одинаковые и сортирует...

Чувствительность МШУ
Всем привет! Стою в начале пути радиотехники, дошли руки до МШУ на одной...


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

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

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