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:
- Wie man
Aktivitäten
mit derGestureDetector
API durchstreichen kann.
Warum dieses Tutorial?
- Beispiele in Kotlin geschrieben.
- Praktisch und schnell.
- Schritt für Schritt.
- 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:
Schritt 5: Herunterladen
Laden Sie den Code von hier herunter.