Kotlin Android GestureDetector Ejemplos
Cuando hablamos de swiping, lo que nos viene a la mente es el ViewPager que se utiliza normalmente para deslizar fragmentos o incluso a veces vistas. Sin embargo, no la "actividad". Si quieres deslizar una actividad como componente tienes que usar la clase GestureDetector.
En este tutorial aprenderás:
- Cómo deslizar
actividadesusando el APIGestureDetector.
¿Por qué este tutorial?
- Ejemplos escritos en Kotlin.
- Práctico y rápido.
- Paso a paso.
- Escrito y validado para funcionar en android studio.
(a). Ejemplo 1 - Cómo deslizar una actividad para abrir otra
Este ejemplo explora cómo se puede deslizar una actividad para abrir otra actividad. Básicamente se tira hacia abajo en una "actividad" y esto resulta en la apertura de otra "actividad".
Paso 1: Dependencias
No se necesita ninguna dependencia de terceros para este proyecto.
Paso 2: Código
Escribimos nuestro código en Kotlin. Tendremos tres clases:
SwipeToActivity.kt
package info.camposha.mr_swipeactivity
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.view.GestureDetector.SimpleOnGestureListener
import android.view.MotionEvent
class SwipeToActivity(//the activity where you will change activity from
var context: Context,
var firstClass: Class<*>?,
var left: Boolean,
var right: Boolean, //these enable sliding to left, right or both directions
var both: Boolean, //first class is the class you come to when sliding to right, second class when you slide left
var secondClass: Class<*>?
) : SimpleOnGestureListener() {
override fun onFling(
event1: MotionEvent,
event2: MotionEvent,
velocityX: Float,
velocityY: Float
): Boolean {
if (event2.x > event1.x) {
if (right || both && firstClass != null) {
//TODO WHEN SWIPING TO RIGHT
val intent = Intent(context, firstClass)
(context as Activity).finish()
context.startActivity(intent)
}
} else if (event2.x < event1.x) {
if (left || both && secondClass != null) {
//TODO WHEN SWIPING TO LEFT
val intent = Intent(context, secondClass)
(context as Activity).finish()
context.startActivity(intent)
}
}
return true
}
}
SecondActivity.kt
package info.camposha.mr_swipeactivity
import android.os.Bundle
import android.view.MotionEvent
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.GestureDetectorCompat
class SecondActivity : AppCompatActivity() {
private var gestureObject: GestureDetectorCompat? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_second)
gestureObject = GestureDetectorCompat(
this,
SwipeToActivity(this@SecondActivity, null, true, false, false, MainActivity::class.java)
)
}
override fun onTouchEvent(event: MotionEvent): Boolean {
gestureObject!!.onTouchEvent(event)
return super.onTouchEvent(event)
}
}
MainActivity.kt
package info.camposha.mr_swipeactivity
import android.os.Bundle
import android.view.MotionEvent
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.GestureDetectorCompat
import info.camposha.mr_swipeactivity.MainActivity
class MainActivity : AppCompatActivity() {
private var gestureObject: GestureDetectorCompat? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
gestureObject = GestureDetectorCompat(
this,
SwipeToActivity(this@MainActivity, SecondActivity::class.java, false, true, false, null)
)
}
override fun onTouchEvent(event: MotionEvent): Boolean {
gestureObject!!.onTouchEvent(event)
return super.onTouchEvent(event)
}
}
Paso 3: Diseños
Encuentre los diseños en la referencia del código fuente.
Paso 4: Ejecutar
Ejecuta el proyecto y obtendrás lo siguiente:

Paso 5: Descargar
Descargue el código desde aquí.