Что такое long click android

Обнаружение длительного нажатия с Android

в настоящее время я использую

чтобы определить, когда пользователь нажимает мой glSurfaceView есть способ определить, когда длинный щелчок сделан. Я предполагаю, что если я не могу найти много в документах dev, то это будет своего рода работа вокруг метода. Что-то вроде регистрации ACTION_DOWN и просмотра, как долго это до ACTION_UP.

Как вы обнаруживаете длинные нажатия на android с помощью opengl-es?

8 ответов

GestureDetector — Это лучшее решение.

вот интересная альтернатива. В onTouchEvent на каждые ACTION_DOWN запланируйте запуск в 1 секунду. На каждом выполняется или ACTION_MOVE, отменить запланированное выполнение. Если отмена происходит менее, чем 1С ACTION_DOWN событие, Runnable не будет работать.

У меня есть код, который обнаруживает щелчок, длинный щелчок и движение. Это довольно комбинация ответа, приведенного выше, и изменений, которые я сделал, заглянув в каждую страницу документации.

Я подтверждаю, что он работает так, как я использовал его в своем собственном приложении.

когда вы имеете в виду пользователь нажимает, вы имеете в виду щелчок? Щелчок когда потребитель отжимает вниз и после этого немедленно поднимает вверх палец. Поэтому он охватывает два события onTouch. Вы должны сохранить использование onTouchEvent для вещей, которые происходят на начальном касании или после выпуска.

таким образом, вы должны использовать onClickListener если это нажать.

ваш ответ аналогичен: используйте onLongClickListener.

решение MSquare работает только в том случае, если вы держите определенный пиксель, но это необоснованное ожидание для конечного пользователя, если они не используют мышь (чего они не делают, они используют пальцы).

Читайте также:  Лучшие кки для андроид

поэтому я добавил немного порога для расстояния между действием вниз и действием вверх, если между ними было действие перемещения.

Я создал фрагмент — вдохновленный фактическим источником просмотра-который надежно обнаруживает длинные клики / прессы с пользовательской задержкой. Но это в Котлине:

идея создания Runnable для выполнения длинного щелчка в будущем, но это выполнение может быть отменено из-за щелчка или перемещения.

Вам также нужно знать, когда длинный щелчок был потреблен, и когда он отменен, потому что палец переместился слишком много. Мы используем initialTouchX & initialTouchY для проверки выхода пользователя из квадратной области 10 пикселей, по 5 с каждой стороны.

вот мой полный код для передачи Нажмите & LongClick С Cell на ListView в Activity С OnTouchListener :

ClickDelegate это interface для отправки событий click в класс обработчика, например Activity

и все, что вам нужно, это реализовать его в своем Activity или родитель View если вам нужно делегировать поведения:

Источник

Как реализовать onClick, onLongClick и onTouch для одного просмотра

У меня есть View (это ViewHolder в RecyclerView, но я думаю, что это не будет иметь никакого значения), который реализует onClick() , onLongClick() и onTouch() . Проблема, с которой я столкнулся, заключается в том, что longClick никогда не выполняется. Я читал об этом в других вопросах, но не могу понять, как это сделать и когда именно мне следует вернуться true \ false в onTouch() . Вот мой код;

Функция bind() в классе ViewHolder, которая реализует View.OnTouchListener :

Переопределить onTouch ()

Эта функция только обнаруживает слайд на виде. Что я должен изменить в onTouch() , чтобы longClick работал? Кроме того, есть ли более простой способ обнаружить слайд на элементе RecyclerView?

Читайте также:  Мобильный оператор для андроид что это

2 ответа

Если у кого-то когда-нибудь возникнет такая проблема, я решил ее так:
(Это элемент просмотра ресайклера, который можно перемещать влево / вправо или прокручивать)

Поля ViewHolder.

Сенсорная функция

Функция прокрутки, передаваемая в ViewHolder

Этот код может выполнять Click, LongClick и Touching view. Когда пользователь делает LongClick, действие перемещения не будет выполнено. Удерживая палец на экране и перемещая его более чем CLICK_DISTANCE Click, LongClick не будет выполнен

Попробуйте использовать с GestureDetector из представления onTouchEvent, как показано ниже

Источник

OnTouch, onLongClick вместе в android

Я буду динамически добавлять изображения в родительский макет. И я выполняю операции увеличения / уменьшения масштаба при добавлении изображения. Я хочу удалить добавленный вид onLongPress.

Работают только события Touch. Зачем? Как у меня есть оба? Где я ошибаюсь? Что мне делать, чтобы удалить добавленный вид? Пожалуйста, помогите мне. Заранее спасибо.

onTouch всегда вызывается для вашего представления, поскольку это начальное состояние отправки событий в представление. Когда вы долгое время нажимаете свое мнение, это по-прежнему вызывает onTouch первым, и, поскольку вы возвращаете true в onTouch (что означает, что вы использовали это событие, и его больше не следует отправлять), вы не получите onLongPress . Что будет делать трюк возвращает false в onTouch

Как обсуждалось @asenovm OnTouch () всегда вызывается, поскольку это начальное состояние отправки событий в представление, но если мы вернем значение false в onTouch (), то оба будут работать как шарм, и проблема будет решена.

Изменить: Мое предложение пользователям заключается в том, что вместо того, чтобы совместно использовать OnLongClickListener () и OnTouch (), попробуйте использовать функцию OnLongClickListener () в Double click event.

Вы можете реализовать Double Click следующими способами:

Читайте также:  Что делать если андроид не находит аирподс

Динамически удалять элементы управления

может помочь вам

Используя onTouch и onLongClick

Попытайтесь, это отлично работает для меня.

Источник

Оцените статью