Saltar al contenido principal

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:

  1. Cómo deslizar actividades usando el API GestureDetector.

¿Por qué este tutorial?

  1. Ejemplos escritos en Kotlin.
  2. Práctico y rápido.
  3. Paso a paso.
  4. 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:

Kotlin Android <code>GestureDetector</code> Example

Paso 5: Descargar

Descargue el código desde aquí.