Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 07.11.2014
Сообщений: 95

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

08.03.2016, 13:30. Показов 2818. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.03.2016, 13:30
Ответы с готовыми решениями:

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

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

Изменить слово по событию OnTouch ACTION_MOVE
Нажимая на &quot;А&quot; и перетащить на квадрат &quot;B&quot; , что бы Получилось в TextView AB .... вот моя реализация но не работает :( public class...

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

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

Решение

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

Не по теме:

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

1
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
08.03.2016, 15:08
Лучший ответ Сообщение было отмечено 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
0 / 0 / 0
Регистрация: 07.11.2014
Сообщений: 95
08.03.2016, 15:35  [ТС]
Цитата Сообщение от Паблито Посмотреть сообщение
так сделать ведь можно?
Паблито, так будет работать только когда палец отпускают.

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

Добавлено через 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
91 / 86 / 12
Регистрация: 08.08.2013
Сообщений: 667
09.03.2016, 11:42
GSerge, это делается с помощью onClick и onLongClick, никаких Math.abs....
drag&drop решает вашу задачу на корню, всё сделано до вас.
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
09.03.2016, 11:48
drag&drop гимор + не всем нравится внешний вид полупрозрачного ShadowBuilder-а
если это все решается на onClick и longclick проведи мастеркласс - приведи пример, если там все так красиво с люди и я будут благодарны
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.03.2016, 11:48
Помогаю со студенческими работами здесь

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

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

Чувствительность мышки
Пользовался мышкой около года и решил установить программу через которую можно поставить скрипты на клавиши мышки, после установки...

Чувствительность к регистру
Пользователь выбирает путь к файлу и пишет название файла, нужно чтобы он мог сам выбирать чувствительность к регистру. Почему в данном...

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru