Wenn Sie Ihre App bereits auf die neuen System-Back-APIs umgestellt haben, können Sie die Funktion „Vorherige Rückgabe“ aktivieren, um automatisch In-App-Animationen zu erhalten und benutzerdefinierte Übergänge zu unterstützen.
Unterstützung für integrierte In-App-Animationen hinzufügen
Nachdem Sie die Funktion aktiviert haben, werden in Ihrer App Animationen für die Rückkehr zur Startseite, für aktivitätsübergreifende und für aufgabenübergreifende Aktionen angezeigt.
Sie können auch die Abhängigkeit von Material Components auf Version 1.10.0 von MDC für Android aktualisieren, um Material Components-Animationen wie die folgenden zu erhalten:
Weitere Informationen finden Sie in der Entwicklerleitfaden für Materialkomponenten auf GitHub.
Das Video zeigt ein kurzes Beispiel für vorausschauende Rückwärtsanimationen aktivitätsübergreifend und zurück zu Hause mithilfe der Android-App "Einstellungen".
- In der Animation wischt der Nutzer zurück, um zu den vorherigen Einstellungen zurückzukehren. Bildschirm – ein Beispiel für eine aktivitätsübergreifende Animation.
- Auf dem vorherigen Bildschirm wischen Nutzende ein zweites Mal zurück, zeigt eine Vorschau des Startbildschirms mit Hintergrund – ein Beispiel für die Back-to-Home-Animation.
- Der Nutzer wischt weiter nach rechts. Daraufhin wird eine Animation des Fensters angezeigt, das sich auf das Symbol auf dem Startbildschirm verkleinert.
- Der Nutzer ist jetzt vollständig zum Startbildschirm zurückgekehrt.
Weitere Informationen zur Unterstützung der Vorhersagefunktion
Benutzerdefinierte In-App-Übergänge und -Animationen hinzufügen
Mit der Progress API und der benutzerdefinierten Methode für aktivitätsübergreifende AnimationenoverrideActivityTransition
können Sie benutzerdefinierte In-App-Property-Animationen und ‑Übergänge erstellen.
Benutzerdefinierte Übergänge mit der Progress API hinzufügen
Mit AndroidX Activity 1.8.0-alpha01 oder höher können Sie die Funktion Predictive Back
Progress APIs zur Entwicklung benutzerdefinierter Animationen
„Zurück“-Touch-Geste in Ihrer App. Innerhalb von
OnBackPressedCallback
haben wir handleOnBackProgressed
, handleOnBackCancelled
und
handleOnBackStarted
-Methoden zum Animieren von Objekten, während der Nutzer zurückwischt. Verwenden Sie diese Methoden, wenn Sie etwas Individuelleres als die Standardanimationen der neuen Systemanimationen oder der Material Component-Animationen benötigen.
Wir gehen davon aus, dass die meisten Apps die abwärtskompatiblen AndroidX APIs verwenden. Es gibt jedoch
ähnliche Plattform-APIs innerhalb des
OnBackAnimationCallback
die für den Test in der Entwicklervorschau 1 von Android 14 und höher verfügbar ist.
Progress APIs mit AndroidX-Übergängen verwenden
Die Progress APIs können mit AndroidX Transitions 1.5.0-alpha01 oder höher unter Android 14 und höher verwendet werden, um Vorhersagen für Rückwärtsübergänge zu erstellen.
- Verwenden Sie
TransitionManager#controlDelayedTransition
anstelle vonbeginDelayedTransition
, um Übergänge abzuspielen, wenn der Nutzer wischt. - Erstellen Sie die Umstellung innerhalb von
handleOnBackStarted
. - Spielen Sie den Übergang mit dem Zurück-Ereignis in
handleOnBackProgressed
ab, indem SiecurrentFraction
mitBackEvent.progress
verknüpfen. So wird angezeigt, wie weit der Nutzer nach links gewischt hat. - Schließen Sie den Übergang ab, nachdem der Nutzer die Zurück-Touch-Geste in
handleOnBackPressed
- Setzen Sie abschließend den Status des Übergangs innerhalb von
handleOnBackCancelled
zurück.
Im folgenden Video, im Kotlin-Code und in der XML-Datei wird eine benutzerdefinierte Überblendung zwischen zwei Boxen gezeigt, die mit OnBackPressedCallback
implementiert wurde:
class MyFragment : Fragment() {
val transitionSet = TransitionSet().apply {
addTransition(Fade(Fade.MODE_OUT))
addTransition(ChangeBounds())
addTransition(Fade(Fade.MODE_IN))
}
...
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val callback = object : OnBackPressedCallback(enabled = false) {
var controller: TransitionSeekController? = null
@RequiresApi(34)
override fun handleOnBackStarted(backEvent: BackEvent) {
// Create the transition
controller = TransitionManager.controlDelayedTransition(
binding.card,
transitionSet
)
changeTextVisibility(ShowText.SHORT)
}
@RequiresApi(34)
override fun handleOnBackProgressed(backEvent: BackEvent) {
// Play the transition as the user swipes back
if (controller?.isReady == true) {
controller?.currentFraction = backEvent.progress
}
}
override fun handleOnBackPressed() {
// Finish playing the transition when the user commits back
controller?.animateToEnd()
this.isEnabled = false
}
@RequiresApi(34)
override fun handleOnBackCancelled() {
// If the user cancels the back gesture, reset the state
transition(ShowText.LONG)
}
}
binding.shortText.setOnClickListener {
transition(ShowText.LONG)
callback.isEnabled = true
}
this.requireActivity().onBackPressedDispatcher.addCallback(callback)
}
private fun transition(showText: ShowText) {
TransitionManager.beginDelayedTransition(
binding.card,
transitionSet
)
changeTextVisibility(showText)
}
enum class ShowText { SHORT, LONG }
private fun changeTextVisibility(showText: ShowText) {
when (showText) {
ShowText.SHORT -> {
binding.shortText.isVisible = true
binding.longText.isVisible = false
}
ShowText.LONG -> {
binding.shortText.isVisible = false
binding.longText.isVisible = true
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
...
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
...>
<TextView
android:id="@+id/short_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
... />
<TextView
android:id="@+id/long_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
.../>
</androidx.constraintlayout.widget.ConstraintLayout>
Beachten Sie bei der Arbeit mit Predictive Back-Übergängen Folgendes:
- Verwenden Sie
isSeekingSupported
, um zu prüfen, ob die Umstellung die Funktion „Predictive Back“ unterstützt. - Überschreiben Sie
isSeekingSupported
, um für Ihre benutzerdefinierten Übergänge „wahr“ zurückzugeben. - Erstellen Sie einen Controller pro Animation.
- Vorhersagende Zurück-Übergänge werden von AndroidX-Übergängen unterstützt, aber nicht von Framework-Übergängen. Wir empfehlen, von Framework-Übergängen wegzukommen.
- Predictive Back-Übergänge werden auf Geräten mit Android 14 und höher nicht abwärtskompatibel.
- Mit XML-Szenen erstellte Übergänge werden ebenfalls unterstützt. In
handleOnBackStarted
, setzeTransitionSeekController
auf das Ergebnis vonTransitionManager.createSeekController
anstelle des Ergebnisses voncontrolDelayedTransition
Benutzerdefinierte Aktivitätsübergänge unter Android 14 und höher hinzufügen
Damit benutzerdefinierte Aktivitätsübergänge die Vorhersagefunktion für die Rückwärtsnavigation unter Android 14 und höher unterstützen, können Sie overrideActivityTransition
anstelle von overridePendingTransition
verwenden. Das bedeutet, dass die Übergangsanimation abgespielt wird, wenn der Nutzer wischt.
Stellen Sie sich als Beispiel ein Szenario vor, in dem Aktivität B findet über Aktivität A im Back Stack statt. Sie verwalten benutzerdefinierte So können Sie Aktivitätsanimationen ansehen:
- Rufen Sie in der Methode
onCreate
von Aktivität B entweder den Beginn- oder den Endübergang auf. - Wenn der Nutzer zu Aktivität B wechselt, verwende
OVERRIDE_TRANSITION_OPEN
. Wenn der Nutzer wischt, um zu Aktivität A zurückzukehren, verwenden SieOVERRIDE_TRANSITION_CLOSE
. Bei Angabe von
OVERRIDE_TRANSITION_CLOSE
istenterAnim
die Aktivität A Animation starten undexitAnim
ist die Exit-Animation von Aktivität B.