Como usar Swipe Gesture com Kotlin

Como usar Swipe Gesture com Kotlin

Nesse tutorial vou descrever Como usar Swipe Gesture com Kotlin para assim ser possível você usar os movimentos de swipe em seu projeto.

Primeiramente vamos criar um projeto vazio(Empty) para fazer pequenas mudanças e ver como funciona a swipe gesture.

Se você não sabe como criar um projeto vazio então de uma olhada no tutorial Como criar um projeto no Android Studio.

Vamos fazer um projeto simples com a seguinte função, moviemto para direita soma 1, para esquerda diminui 1, para cima soma 2 e para baixo diminui 2.

Então agora vamos modificar a nossa activity_main para ter um textview que contenha o número 1 e assim fazer os cálculos com a swipe gesture.

activity_main

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".MainActivity">
    <TextView
       android:id="@+id/tvNumb"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:text="1"
       android:textSize="90dp"
       android:gravity="center"/>
</androidx.constraintlayout.widget.ConstraintLayout>

Logo depois de ter feito as alterações na activity_main vamos então modificar a nossa MainActivity para criar nosso listner de movimentação na tela e assim fazer com que nossos cálculos funcionem.

Então vamos deixar nossa MainActivity com o seguinte código.

MainActivity

class MainActivity : AppCompatActivity() {
    private lateinit var gestureDetector: GestureDetectorCompat
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        gestureDetector = GestureDetectorCompat(this, gestureListener)
        tvNumb.setOnTouchListener { _, motionEvent ->
            handleTouch(motionEvent)
            true
        }
    }
    val gestureListener = object : GestureDetector.SimpleOnGestureListener(){
        override fun onScroll(e1: MotionEvent?, e2: MotionEvent?, distanceX: Float, distanceY: Float): Boolean {
            super.onScroll(e1, e2, distanceX, distanceY)
            if(distanceX>100){
                calcSwipe("e",tvNumb.text.toString().toInt())
                return true
            }
            else if(distanceX<-100){
                calcSwipe("d",tvNumb.text.toString().toInt())
                return true
            }
            else if(distanceY>100){
                calcSwipe("c",tvNumb.text.toString().toInt())
                return true
            }
            else if(distanceY<-100){
                calcSwipe("b",tvNumb.text.toString().toInt())
                return true
            }
            else return false
        }
    }
    private fun handleTouch(event: MotionEvent): Boolean{
        return gestureDetector.onTouchEvent(event)
    }
    private fun calcSwipe(dir: String, num: Int) {
        var resp = num
        when(dir){
            "d" -> resp += 1
            "e" -> resp -= 1
            "c" -> resp += 2
            "b" -> resp -= 2
        }
        tvNumb.text = resp.toString()
    }
}

Logo após ter feito as modificações vamos compilar e executar o nosso projeto para ver como funciona.

Enfim espero poder ter ajudado com mais este tutorial sobre Como usar Swipe Gesture com Kotlin.

Ainda assim se estiver com alguma dúvida entre em nosso canal no telegram clicando no link abaixo.




Rodrigo Leutz
Desenvolvedor Web e Android ( Kotlin e Java )