La detección de gestos es una característica muy importante en la que se centran muchos desarrolladores de aplicaciones. Puede haber una serie de gestos que podrían ser necesarios para realizar ciertas acciones. Por ejemplo, es posible que un usuario deba deslizar la pantalla de izquierda a derecha para desbloquearla. Del mismo modo, podría ser necesario viceversa. En tales casos, es necesario detectar la dirección del deslizamiento o gesto realizado por el usuario. De manera similar, la mayoría de las aplicaciones de juegos dependen en gran medida de los gestos del usuario para realizar las acciones deseadas. Entonces, a través de este artículo, le mostraremos cómo puede detectar la dirección de deslizamiento de la entrada del usuario en la pantalla.
Implementación paso a paso
Paso 1: crea un nuevo proyecto en Android Studio
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Demostramos la aplicación en Kotlin , así que asegúrese de seleccionar Kotlin como idioma principal al crear un nuevo proyecto.
Paso 2: agregue esto en el código principal (MainActivity.kt)
Consulte los comentarios dentro del código para una mejor comprensión.
Kotlin
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.GestureDetector import android.view.MotionEvent import android.widget.Toast import kotlin.math.abs class MainActivity : AppCompatActivity(), GestureDetector.OnGestureListener { // Declaring gesture detector, swipe threshold, and swipe velocity threshold private lateinit var gestureDetector: GestureDetector private val swipeThreshold = 100 private val swipeVelocityThreshold = 100 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Initializing the gesture detector gestureDetector = GestureDetector(this) } // Override this method to recognize touch event override fun onTouchEvent(event: MotionEvent): Boolean { return if (gestureDetector.onTouchEvent(event)) { true } else { super.onTouchEvent(event) } } // All the below methods are GestureDetector.OnGestureListener members // Except onFling, all must "return false" if Boolean return type // and "return" if no return type override fun onDown(e: MotionEvent?): Boolean { return false } override fun onShowPress(e: MotionEvent?) { return } override fun onSingleTapUp(e: MotionEvent?): Boolean { return false } override fun onScroll(e1: MotionEvent?, e2: MotionEvent?, distanceX: Float, distanceY: Float): Boolean { return false } override fun onLongPress(e: MotionEvent?) { return } override fun onFling(e1: MotionEvent, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean { try { val diffY = e2.y - e1.y val diffX = e2.x - e1.x if (abs(diffX) > abs(diffY)) { if (abs(diffX) > swipeThreshold && abs(velocityX) > swipeVelocityThreshold) { if (diffX > 0) { Toast.makeText(applicationContext, "Left to Right swipe gesture", Toast.LENGTH_SHORT).show() } else { Toast.makeText(applicationContext, "Right to Left swipe gesture", Toast.LENGTH_SHORT).show() } } } } catch (exception: Exception) { exception.printStackTrace() } return true } }
No se necesita código de diseño (actividad_principal.xml)
XML
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> </androidx.constraintlayout.widget.ConstraintLayout>
Producción:
Publicación traducida automáticamente
Artículo escrito por aashaypawar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA