Quando falamos em deslizar, o que vem à mente é o "ViewPager" que é normalmente utilizado para deslizar "fragmentos" ou mesmo, às vezes, vistas. No entanto, não é "atividade". Se você quiser deslizar uma atividade como um componente, você tem que utilizar a classe GestureDetector.

Neste tutorial, você aprenderá:

  1. Como deslizar atividades utilizando o API GestureDetector.

Por que este tutorial?

  1. Exemplos escritos em Kotlin.
  2. Prático e rápido.
  3. Passo a passo.
  4. Escrito e validado para trabalhar em estúdio andróide.

(a). Exemplo 1 - Como Passar uma Atividade para abrir outra

Este exemplo explora como você pode passar uma "atividade" para abrir outra "atividade". Basicamente, você puxa para baixo uma "atividade" e isto resulta na abertura de outra "atividade".

Passo 1: Dependências

Nenhuma dependência de terceiros é necessária para este projeto.

Passo 2: Código

Nós escrevemos nosso código em Kotlin. Teremos três classes:

**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)
    }
}

Passo 3: Layouts

Encontre layouts na referência do código fonte.

Passo 4: Executar

Execute o projeto e você terá o seguinte:

Kotlin Android <code>GestureDetector</code> Exemplo

Passo 5: Download

Baixe o código a partir de aqui.

Categorized in: