Пример реализации 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-67f9502224cc8896057202/] Это будет ...

Читать

Цвет фона у компонента Button

Январь 16, 2025 г.

Компонент кнопка в android studio имеет огромное число цветовых настроек, связанных прежде всего с material design совместимостью. Поэтому установка цвета фона через атрибут - android:background не работает здесь. Попробуйте использовать другой ...

Читать

 

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

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



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