Wenn wir über Swiping sprechen, kommt uns der ViewPager in den Sinn, der typischerweise zum Swipen von Fragmenten oder manchmal sogar Views verwendet wird. Aber nicht Aktivität. Wenn Sie eine "Aktivität" als Komponente streichen wollen, müssen Sie die Klasse "GestureDetector" verwenden.

In diesem Tutorial werden Sie lernen:

  1. Wie man Aktivitäten mit der GestureDetector API durchstreichen kann.

Warum dieses Tutorial?

  1. Beispiele in Kotlin geschrieben.
  2. Praktisch und schnell.
  3. Schritt für Schritt.
  4. Geschrieben und validiert, um in android studio zu arbeiten.

(a). Beispiel 1 - Wie man durch Wischen von einer Aktivität eine andere öffnet

In diesem Beispiel wird gezeigt, wie man eine "Aktivität" wischen kann, um eine andere "Aktivität" zu öffnen. Im Grunde genommen zieht man eine Activity nach unten und öffnet damit eine andere Activity.

Schritt 1: Abhängigkeiten

Für dieses Projekt werden keine Abhängigkeiten von Drittanbietern benötigt.

Schritt 2: Code

Wir schreiben unseren Code in Kotlin. Wir werden drei Klassen haben:

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

Schritt 3: Layouts

Finden Sie die Layouts in der Quellcode-Referenz.

Schritt 4: Ausführen

Führen Sie das Projekt aus und Sie erhalten das Folgende:

Kotlin Android <code>GestureDetector</code> Example

Schritt 5: Herunterladen

Laden Sie den Code von hier herunter.

Categorized in: