Pular para o conteúdo principal

Kotlin Android GestureDetector Exemplos

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.