Šta je potrebno uraditi za animaciju prelaza između ekrana?
sobes.tech АИ
Одговор од АИ
Za animacije prelaza između ekrana u Androidu možete koristiti nekoliko pristupa:
-
Animacije aktivnosti (Activity Animations): Definišu se u temama ili programatski. Omogućavaju postavljanje standardnih animacija ulaska i izlaska za aktivnosti.
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) }Fajlovi animacija (npr.
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> -
Animacije fragmenata (Fragment Animations): Definišu se prilikom izvršavanja transakcije fragmenta.
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() -
Animacije zajedničkih elemenata (Shared Element Transitions): Omogućavaju animiranje prelaza jednog ili više View između ekrana, stvarajući efekat kontinuiteta. Zahteva uključivanje podrške transition u temi.
U početnoj aktivnosti:
val options = ActivityOptionsCompat.makeSceneTransitionAnimation( this, sharedView, // View za animaciju ViewCompat.getTransitionName(sharedView) // Ime za povezivanje ) startActivity(intent, options.toBundle())U aktivnostima koje primaju:
// U metodi onCreate ili onViewCreated (za fragment) supportPostponeEnterTransition() // Odložiti ulaznu animaciju dok View-ovi ne budu spremni // Zatim, kada su View-ovi spremni (npr. pri učitavanju slike): supportStartPostponedEnterTransition()U XML rasporedu obe ekrane:
<ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:transitionName="image_transition" /> <!-- Ime za povezivanje --> -
Component Animations (Navigation Component): Ako se koristi Navigation Component, animacije prelaza mogu se direktno postaviti u grafu navigacije.
<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" />
Izbor metode zavisi od korišćene arhitekture (Activity, Fragments, Navigation Component) i željenog efekta.