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

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

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

Чувствительность MotionEvent.ACTION_MOVE - Программирование Android

08.03.2016, 13:30. Просмотров 591. Ответов 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 (Программирование Android):

Обработка перемещения объекта на экране - MotionEvent.ACTION_MOVE - Программирование Android
Когда перемещаю картинку к краю экрана, то её размер уменьшается, а после совсем исчезает. Нужно сохранять размер постоянным. Как? ...

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

Задержка отрисовки Canvas. MotionEvent - Программирование Android
Здравствуйте. Написал простейшую программу рисующую жёлтую точку при касании экрана. Как только начинаю водить пальцем, точка начинает...

OnTouch MotionEvent в андроид выполняется только один раз - Программирование Android
Так вот сам вопрос: MotionEvent.ACTION_UP выполняется только первый раз, что при использовании if, что case. Кликаем по копке звук...

Чувствительность к регистру - C#
if (vaza == &quot;ваза&quot;) { } Как сделать, что бы слово в &quot;&quot; было не чувствительно к регистру. Вот пример если не понятно объяснил if...

Чувствительность к регистру - C#
Доброе утро. Ребята как убрать чувствительность к регистру string obj = &quot;Душа&quot; //душа or ДУША or ДуША string sql = &quot;SELECT *...

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

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

Не по теме:

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

1
Pablito
2496 / 1980 / 618
Регистрация: 12.05.2014
Сообщений: 6,922
Завершенные тесты: 1
08.03.2016, 15:08 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
так сделать ведь можно?
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
Сообщений: 81
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_
75 / 74 / 8
Регистрация: 08.08.2013
Сообщений: 606
09.03.2016, 11:42 #7
GSerge, это делается с помощью onClick и onLongClick, никаких Math.abs....
drag&drop решает вашу задачу на корню, всё сделано до вас.
0
Pablito
2496 / 1980 / 618
Регистрация: 12.05.2014
Сообщений: 6,922
Завершенные тесты: 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
Привет! Вот еще темы с ответами:

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

Чувствительность микрофона - Java SE
Добрый день! Несколько дней уже бьюсь с проблемой: в моей программе (кроме всего прочего) необходимо выполнить определенные действия...

Чувствительность акселерометра - Unity, Unity3D
Всем доброго дня, возможно кто то сталкивался с такой проблемой как чувствительность акселерометра? Я вот столкнулся и не могу никак решить...

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


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

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

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