Was muss gemacht werden, um eine Übergangsanimation zwischen Bildschirmen zu erstellen?
sobes.tech KI
Antwort von AI
Für die Übergangsanimationen zwischen Bildschirmen in Android können verschiedene Ansätze verwendet werden:
-
Aktivitätsanimationen (Activity Animations): Werden in Themen oder programmatisch definiert. Ermöglichen das Festlegen von Standard-Animations für Ein- und Ausblenden von Aktivitäten.
override fun startActivity(intent: Intent) { super.startActivity(intent) overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left) } override fun finish() { super.finish() overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right) }Animationsdateien (z.B.
res/anim/slide_in_right.xml):<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%" android:toXDelta="0%" android:duration="@android:integer/config_shortAnimTime" /> </set> -
Fragment-Animationen (Fragment Animations): Werden bei der Durchführung einer Fragment-Transaktion definiert.
supportFragmentManager.beginTransaction() .setCustomAnimations(R.anim.fade_in, R.anim.fade_out, R.anim.fade_in, R.anim.fade_out) .replace(R.id.container, fragment) .commit() -
Shared Element Transitions: Ermöglichen die Animation des Übergangs eines oder mehrerer Views zwischen Bildschirmen, um einen nahtlosen Effekt zu erzeugen. Erfordern die Aktivierung der Transition-Unterstützung im Theme.
Im Quell-Activity:
val options = ActivityOptionsCompat.makeSceneTransitionAnimation( this, sharedView, // View für die Animation ViewCompat.getTransitionName(sharedView) // Name für die Verknüpfung ) startActivity(intent, options.toBundle())In der empfangenden Activity:
// In onCreate oder onViewCreated (für Fragmente) supportPostponeEnterTransition() // Übergangsanimation verzögern, bis Views bereit sind // Dann, wenn Views bereit sind (z.B. im Bild-Lade-Listener): supportStartPostponedEnterTransition()In den XML-Layouts beider Bildschirme:
<ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:transitionName="image_transition" /> <!-- Name für die Verknüpfung --> -
Component Animations (Navigation Component): Wenn der Navigation Component verwendet wird, können Übergangsanimationen direkt im Navigationsgraph definiert werden.
<action android:id="@+id/action_fragmentA_to_fragmentB" app:destination="@id/fragmentB" app:enterAnim="@anim/slide_in_right" app:exitAnim="@anim/slide_out_left" app:popEnterAnim="@anim/slide_in_left" app:popExitAnim="@anim/slide_out_right" />
Die Wahl der Methode hängt von der verwendeten Architektur (Activity, Fragments, Navigation Component) und dem gewünschten Effekt ab.