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

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

Войти
Регистрация
Восстановить пароль
 
dimon4
4 / 4 / 0
Регистрация: 12.04.2016
Сообщений: 39
#1

OnTouchListener и толстый дрожащий палец :) - Программирование Android

28.05.2016, 21:24. Просмотров 154. Ответов 3
Метки нет (Все метки)

суть проблемы... жму в экран, двигаю, отпускаю, получаю события ACTION_DOWN, ACTION_UP, ACTION_MOVE... при длительном нажатии желаю получить какое-то особое действие (пусть будет вывод диалога)...
на эмуляторе все красиво, мышкой делаю тыцк, не шевелюсь 3секунды, отпускаю кнопочку - диалог выводится.
на смартфоне добиться такого не смог ни разу (( что можно сделать в этом случае? палец подточить не вариант
и отработать событие необходимо именно в текущей точке код ничем не примечателен, все как у всех, ниже привел.

на крайний случай планирую временную переменную типа ОтклонениеПоХ если в итоге менее 2-3px, значит событие отработает...


Кликните здесь для просмотра всего текста
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
    public boolean onTouch(View v, MotionEvent event) {
 
        try {
            Thread.sleep(50);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
 
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                isDown = true;
                x = event.getX();
                y = event.getY();
                break;
            case MotionEvent.ACTION_UP:
                isUp = true;
                x = event.getX();
                y = event.getY();
                break;
            case MotionEvent.ACTION_MOVE:
                isMoved = true;
                Log.d(LOG_TAG,"движуха");
                x = event.getX();
                y = event.getY();
                break;
        }
        return true;
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2016, 21:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос OnTouchListener и толстый дрожащий палец :) (Программирование Android):

OnTouchListener - Программирование Android
Здравствуйте! Этот код работает как надо на Android 5.0+, но на 4.4 и ниже по какой-то причине не работает. final Button xy = new...

OnTouchListener - Программирование Android
Button start = (Button) findViewById(R.id.Start); start.setOnTouchListener(new OnTouchListener() { @Override ...

Не работает OnTouchListener - Программирование Android
Button start = (Button) findViewById(R.id.Start); start.setOnTouchListener(new OnTouchListener() { @Override public...

Создать OnTouchListener - Программирование Android
bt11 = (Button)findViewById(R.id.bt11); bt11.setOnTouchListener(myListener); Нужно создать рабочий myListener. Добавлено...

Image OnTouchListener crash - Программирование Android
Делаю своё первое приложение под Android и столкнулся с следующей проблемой - программа вылетает при добавлении в неё следующего кода...

Как правильно обработать onTouchListener - Программирование Android
В моем коде обработчик прикосновений работает как onClickListener. Помогите исправить. Нужно сделать так, чтоб при прикосновении на...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Dantes2104
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 61
28.05.2016, 21:43 #2
Возникает один вопрос. Как ты проверяешь что палец не сместился если ты переприсваеваешь значения при событии ACTION_UP тем же переменных, в которых ты записываешь координаты при событии ACTION_DOWN?
dimon4
4 / 4 / 0
Регистрация: 12.04.2016
Сообщений: 39
29.05.2016, 07:07  [ТС] #3
а тут все просто... сейчас при ACTION_DOWN фиксирую timeStart = System.currentTimeMillis(); при ACTION_UP:
Java
1
2
3
4
5
6
if (isUp) {
               if (!isMoved) {
                        timeEnd = System.currentTimeMillis();
                        if (timeEnd - timeStart > 2000) {
                            moveIntoBackground(mCapturedID);
                        }
что мне мешает Х, У запомнить и при isMoved получать МаксОтклонениеХ, МаксОтклонениеУ?

Добавлено через 9 часов 11 минут
будем считать что вопрос решен добавлением 4 лишних переменных для отлавливания перемещений между ACTION_DOWN и ACTION_UP.

может есть еще какие-то события в андроид? типа двойного клика, нажатия правой кнопки мыши, прокрутки мышьего колесика?
Pablito
2473 / 1918 / 595
Регистрация: 12.05.2014
Сообщений: 6,745
Завершенные тесты: 1
29.05.2016, 10:06 #4
к вопросу применения
Цитата Сообщение от dimon4 Посмотреть сообщение
timeEnd = System.currentTimeMillis()
Как определить, какой промежуток времени длилось нажатие?
был сдвиг или нет решается запоминанием начальных координат касания

для остальных извращений есть https://developer.android.com/traini.../detector.html
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2016, 10:06
Привет! Вот еще темы с ответами:

OnTouchListener не работает на низких версиях Android - Программирование Android
Ребят, молю о помощи. Вобщем этот код адекватно работает на 5.0+, но на 4.2 полная каша... При нажатии каким-то чудом вызывается...

Окружность радиус которого является getEvent палец - Программирование Android
здравствуйте! Есть вопрос, окружность радиус которого является getEvent палец, вокруг пальца отрисовывается круг, через палец он также...

PLAY при касании экрана и STOP когда палец убран - Программирование Android
Вот код . . . @Override public boolean onTouchEvent(MotionEvent event) { mpAudio = MediaPlayer.create(this,...

Дрожащий текст - jQuery
Здравствуйте всем! И на повестке дня такой вопрос. Мне очень интересно как реализовать дрожание текста или картинки как на сайте...


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

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

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