Пример реализации Swipe Gesture для любого view элемента

Для списка есть класс ItemTouchHelper, который реализует свайпы для элементов списка, а хотелось бы получить реализацию этого жеста для любого элемента View.

Как это должно работать

Это должна быть довольно простая вещь, основанная на обработке OnTouch.

При начале взаимодействия (ACTION_DOWN), мы запоминаем позицию касания, а потом при движении (ACTION_MOVE) мы смещаем элемент View на тоже расстояние, что и сместилось пятно касания. Когда касание прекращается (ACTION_UP) — то мы возвращаем элемент на изначальное место.

Все анимации можно переложить на android, т.к. у нас есть замечательный метод View.animate().

Если в момент ACTION_UP смещение превысило некий порог (SWIPE_SUCCESS_THRESHOLD), то мы запускаем callback, где выполняется пользовательский код. Также устанавливается флаг, что SWIPE был засчитан — isSwipedSuccess. Этот флаг можно сбрасывать.

Класс SwiperHelper

Описанная логика реализована в следующем классе.

При инициализации swiper нуждается во View, для которого будет обрабатываться наш свайп жест, а также нужен экземпляр android.os.Handler — очередь событий, в которой происходит отрисовка компонента, чтобы выполнить callback в том же потоке.

В качестве интерфейса с колбеком, я использую штатный Runnable.

Пример инициализации:

Если SWIPE состоялся, но логика приложения требует, чтобы код коллбека выполнился вновь при очередном свайпе, сбросим флаг свайпа:

Как видите, здесь реализован горизонтальный свайп. Если будет время оформить это в виде внешней библиотеки, то добавлю туда и вертикальный.

Написать комментарий

Мало букафф? Читайте есчо !

Как изменить цвет фона приложения

Январь 14, 2025 г.

Когда вы проектируете макет активити в android studio вы можете у корневого контейнера задать цвет фона выбрав соответствующее значение атрибута android:background. Как в примере ниже - черный фон [crayon-679b80298362b061564545/] Это будет ...

Читать

Анонимная имплементация интерфейса в kotlin

Январь 18, 2025 г.

На Java этот трюк хорошо обкатан, IDE Android Studio по одному клику вставляет шаблон для реализации кода выбранного интерфейса. На kotlin это работает ...

Читать

 

Комментарии к «Пример реализации Swipe Gesture для любого view элемента»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: