Wat moet er gedaan worden voor de overgangsanimatie tussen schermen?
sobes.tech AI
Antwoord van AI
Voor overgangsanimaties tussen schermen in Android kunnen verschillende benaderingen worden gebruikt:
-
Activiteit Animaties (Activity Animations): Gedefinieerd in thema's of programmatisch. Hiermee kunnen standaard in- en uit-animaties voor activiteiten worden ingesteld.
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) }Animatiebestanden (bijvoorbeeld
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 Animaties (Fragment Animations): Worden gedefinieerd bij het uitvoeren van een fragmenttransactie.
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: Hiermee kunnen de overgang van één of meerdere Views tussen schermen worden geanimeerd, waardoor een continueffect ontstaat. Vereist het inschakelen van transition-ondersteuning in het thema.
In de bronactiviteit:
val options = ActivityOptionsCompat.makeSceneTransitionAnimation( this, sharedView, // View voor animatie ViewCompat.getTransitionName(sharedView) // Naam voor koppeling ) startActivity(intent, options.toBundle())In de ontvangende activiteit:
// In de onCreate of onViewCreated-methode (voor fragmenten) supportPostponeEnterTransition() // Stel de invoeranimatie uit totdat Views klaar zijn // Vervolgens, wanneer Views klaar zijn (bijvoorbeeld in een afbeeldingslaadlistener): supportStartPostponedEnterTransition()In de XML-indeling van beide schermen:
<ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:transitionName="image_transition" /> <!-- Naam voor koppeling --> -
Component Animaties (Navigation Component): Als de Navigation Component wordt gebruikt, kunnen overgangsanimaties rechtstreeks in de navigatiegrafiek worden gedefinieerd:
<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" />
De keuze van de methode hangt af van de gebruikte architectuur (Activity, Fragments, Navigation Component) en het gewenste effect.