Я хочу, чтобы мое приложение распознавало, когда пользователь проводит пальцем справа налево на экране телефона.
Как это сделать?
android
swipe
gesture-recognition
endryha
источник
источник
Ответы:
OnSwipeTouchListener.java :
Применение:
источник
OnSwipeTouchListener
который получает контекст, потому что этот конструкторGestureDetector
не рекомендуется с уровня API 3, и создать экземплярGestureDetector
в этом конструкторе.onTouch
кOnSwipeTouchListener
определению, в противном случае в моей среде IDE появится сообщение «Доступ к личному члену»Этот код обнаруживает пролистывание влево и вправо, избегает устаревших вызовов API и имеет другие улучшения по сравнению с предыдущими ответами.
Используйте это так:
источник
setOnTouchListener
(обычно вonCreate
).context
являетсяthis
указателем (если вы создаёте фрагмент).Fragment.getActivity()
.Если вам также нужно обрабатывать события клика, здесь внесены некоторые изменения:
И пример использования:
источник
Расширение ответа Mirek, для случая, когда вы хотите использовать жесты смахивания в представлении прокрутки. По умолчанию сенсорный приемник для просмотра с прокруткой отключен, поэтому действие прокрутки не выполняется. Чтобы это исправить, вам нужно переопределить
dispatchTouchEvent
методActivity
и вернуть унаследованную версию этого метода после того, как вы закончите со своим собственным слушателем.Чтобы сделать несколько изменений в коде Мирека: я добавляю геттер для
gestureDetector
вOnSwipeTouchListener
.Объявите
OnSwipeTouchListener
внутреннюю активность как общеклассовое поле.Измените код использования соответственно:
И переопределите
dispatchTouchEvent
метод внутриActivity
:Теперь действия прокрутки и прокрутки должны работать.
источник
Для того , чтобы иметь
Click Listener
,DoubleClick Listener
,OnLongPress Listener
,Swipe Left
,Swipe Right
,Swipe Up
,Swipe Down
Одно-View
вам нужноsetOnTouchListener
. т.е.Для этого вам нужен
OnSwipeTouchListener
класс, который реализуетOnTouchListener
.источник
Вам не нужны сложные вычисления. Это можно сделать, просто используя
OnGestureListener
интерфейс изGestureDetector
класса.Внутри
onFling
метода вы можете обнаружить все четыре направления, как это:MyGestureListener.java
:Применение:
источник
velocityX
иvelocityY
вonFling
методе. хотя вы можете поэкспериментировать, чтобы увидеть, какое значение лучше всего соответствует вашим потребностям, окончательное число будет универсальным.Используйте SwipeListView и пусть он обрабатывает обнаружение жестов для вас.
источник
Котлинская версия @Mirek Rusin находится здесь:
OnSwipeTouchListener.kt:
Применение:
open
ключевое слово было дело для меня ...источник
Чтобы добавить onClick, вот что я сделал.
Я использую фрагменты, поэтому с помощью getActivity () для контекста. Вот как я это реализовал - и это работает.
источник
Метод Эдварда Брея прекрасно работает. Если кто-то также хотел бы скопировать и вставить данные импорта
OnSwipeTouchListener
, вот они:источник
Небольшая модификация @Mirek Rusin отвечает, и теперь вы можете обнаружить мультитач свайпы. Этот код на Kotlin:
Где Gesture.SWIPE_RIGHT и другие являются уникальным целочисленным идентификатором жеста, который я использую для определения вида жеста позже в моей деятельности:
Итак, вы видите, что жест здесь представляет собой целочисленную переменную, которая содержит значение, которое я передал ранее.
источник
Мое решение аналогично приведенному выше, но я абстрагировал обработку жестов в абстрактный класс
OnGestureRegisterListener.java
, который включает в себя пролистывание , нажатие и длительное нажатие жесты .OnGestureRegisterListener.java
И используйте это так. Обратите внимание, что вы также можете легко передать свой
View
параметр.источник
Я делаю подобные вещи, но только для горизонтальных ударов
И тогда его можно использовать для просмотра компонентов
источник
Этот вопрос был задан много лет назад. Теперь есть лучшее решение: SmartSwipe: https://github.com/luckybilly/SmartSwipe
код выглядит так:
источник
@Mirek Rusin отвечает очень хорошо. Но есть небольшая ошибка, и исправление требуется -
Какая разница? Мы устанавливаем result = true, только если мы проверили, что все повторные обращения (и SWIPE_THRESHOLD и SWIPE_VELOCITY_THRESHOLD в порядке). Это важно, если мы отбрасываем свайп, если некоторые из повторений не достигнуты, и мы должны сделать что-то в методе OnTouchEvent объекта OnSwipeTouchListener!
источник
Вот простой Android-код для определения направления жеста
В
MainActivity.java
иactivity_main.xml
напишите следующий код:источник
источник
Если вы хотите отобразить некоторые кнопки с действиями, когда элемент списка пролистан, есть много библиотек в Интернете, которые имеют такое поведение. Я реализовал библиотеку, которую нашел в интернете, и я очень доволен. Это очень просто в использовании и очень быстро. Я улучшил исходную библиотеку и добавил новый приемник щелчков для щелчка элементов. Также я добавил библиотеку шрифтов awesome ( http://fortawesome.github.io/Font-Awesome/ ), и теперь вы можете просто добавить новый заголовок элемента и указать имя значка из шрифта awesome.
Вот ссылка на GitHub
источник
источник
использование ответа Эдварда Брея в Kotlin
источник