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".

Dios tiene el control .. Reflexiones Cristianas

Dios tiene el control .. Reflexione...
Dios tiene el control .. Reflexiones Cristianas

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([email protected], 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([email protected], 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í.