Quiero que mi aplicación reconozca cuando un usuario desliza el dedo de derecha a izquierda en la pantalla del teléfono.
¿Como hacer esto?
android
swipe
gesture-recognition
endryha
fuente
fuente
Respuestas:
OnSwipeTouchListener.java :
Uso:
fuente
OnSwipeTouchListener
que reciba un contexto porque ese constructor deGestureDetector
está en desuso desde el nivel 3 de API e instanciarloGestureDetector
en ese constructor.onTouch
a laOnSwipeTouchListener
definición; de lo contrario, mi IDE aparecerá un error de "acceso al miembro privado"Este código detecta deslizamientos hacia la izquierda y hacia la derecha, evita llamadas API obsoletas y tiene otras mejoras diversas sobre las respuestas anteriores.
Úselo así:
fuente
setOnTouchListener
(generalmente enonCreate
).context
es elthis
puntero (a menos que esté creando un fragmento).Fragment.getActivity()
.Si también necesita procesar eventos de clic aquí, algunas modificaciones:
Y uso de la muestra:
fuente
Ampliando la respuesta de Mirek, para el caso en que desea utilizar los gestos de deslizamiento dentro de una vista de desplazamiento. De forma predeterminada, el oyente táctil para la vista de desplazamiento se deshabilita y, por lo tanto, la acción de desplazamiento no ocurre. Para solucionar esto, debe anular el
dispatchTouchEvent
método deActivity
y devolver la versión heredada de este método una vez que haya terminado con su propio oyente.Para hacer algunas modificaciones al código de Mirek: agrego un captador para
gestureDetector
elOnSwipeTouchListener
.Declare el
OnSwipeTouchListener
interior de la actividad como un campo de toda la clase.Modifique el código de uso en consecuencia:
Y anular el
dispatchTouchEvent
método dentroActivity
:Ahora las acciones de desplazamiento y deslizamiento deberían funcionar.
fuente
Con el fin de tener
Click Listener
,DoubleClick Listener
,OnLongPress Listener
,Swipe Left
,Swipe Right
,Swipe Up
,Swipe Down
el únicoView
que necesitasetOnTouchListener
. es decir,Para esto necesitas una
OnSwipeTouchListener
clase que implementeOnTouchListener
.fuente
No necesitas cálculos complicados. Se puede hacer simplemente usando la
OnGestureListener
interfaz de laGestureDetector
clase.Dentro del
onFling
método puede detectar las cuatro direcciones de esta manera:MyGestureListener.java
:uso:
fuente
velocityX
yvelocityY
en elonFling
método. aunque puede experimentar para ver qué valor se adapta mejor a sus necesidades, pero el número final sería universal.Use SwipeListView y deje que maneje la detección de gestos por usted.
fuente
La versión de Kotlin de @Mirek Rusin está aquí:
OnSwipeTouchListener.kt:
Uso:
la
open
palabra clave fue el punto para mí ...fuente
Para agregar un onClick también, esto es lo que hice.
Estoy usando Fragments, así que uso getActivity () para el contexto. Así es como lo implementé, y funciona.
fuente
El método de @Edward Brey funciona muy bien. Si a alguien también le gustaría copiar y pegar las importaciones para el
OnSwipeTouchListener
, aquí están:fuente
Una pequeña modificación de la respuesta de @Mirek Rusin y ahora puede detectar golpes múltiples. Este código está en Kotlin:
Where Gesture.SWIPE_RIGHT y otros son identificadores enteros únicos de gestos que estoy usando para detectar algún tipo de gesto más adelante en mi actividad:
Entonces, ves gesto aquí es una variable entera que contiene el valor que he pasado antes.
fuente
Mi solución es similar a las anteriores, pero he abstraído el manejo de gestos en una clase abstracta
OnGestureRegisterListener.java
, que incluye deslizar , hacer clic y hacer clic largo gestos de .OnGestureRegisterListener.java
Y úsalo así. Tenga en cuenta que también puede pasar fácilmente su
View
parámetro.fuente
He estado haciendo cosas similares, pero solo para golpes horizontales
Y luego se puede usar para ver componentes
fuente
Esta pregunta se hizo hace muchos años. Ahora, hay una mejor solución: SmartSwipe: https://github.com/luckybilly/SmartSwipe
el código se ve así:
fuente
@Mirek Rusin answeir es muy bueno. Pero, hay un pequeño error, y se requiere una reparación:
¿Cuál es la diferencia? Establecemos result = true, solo si hemos verificado que todos los requisitos (tanto SWIPE_THRESHOLD como SWIPE_VELOCITY_THRESHOLD están bien). ¡Esto es importante si descartamos el deslizamiento si no se logran algunos requisitos, y tenemos que hacer algo en el método onTouchEvent de OnSwipeTouchListener!
fuente
Aquí hay un simple código de Android para detectar la dirección del gesto
En
MainActivity.java
yactivity_main.xml
, escriba el siguiente código:fuente
fuente
Si desea mostrar algunos botones con acciones cuando se desliza un elemento de la lista, hay muchas bibliotecas en Internet que tienen este comportamiento. Implementé la biblioteca que encontré en Internet y estoy muy satisfecho. Es muy simple de usar y muy rápido. Mejoré la biblioteca original y agregué un nuevo detector de clics para hacer clic en el elemento. También agregué la biblioteca Font Awesome ( http://fortawesome.github.io/Font-Awesome/ ) y ahora simplemente puede agregar un nuevo título de elemento y especificar el nombre del icono de Font Awesome.
Aquí está el enlace de github
fuente
fuente
El uso de la respuesta de Edward Brey en Kotlin
fuente