Čo je potrebné urobiť pre animáciu prechodu medzi obrazovkami?
sobes.tech AI
Odpoveď od AI
Prechodové animácie medzi obrazovkami v Android môžete realizovať viacerými spôsobmi:
-
Animácie aktivít (Activity Animations): Definujú sa v témach alebo programovo. Umožňujú nastaviť štandardné animácie vstupu a výstupu pre aktivity.
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) }Súbory animácií (napríklad
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> -
Animácie fragmentov (Fragment Animations): Definujú sa pri vykonávaní transakcie fragmentu.
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() -
Animácie zdieľaných prvkov (Shared Element Transitions): Umožňujú animovať prechod jedného alebo viacerých View medzi obrazovkami, vytvárajúc efekt kontinuity. Vyžadujú povolenie podpory transition v téme.
V východzej aktivite:
val options = ActivityOptionsCompat.makeSceneTransitionAnimation( this, sharedView, // View pre animáciu ViewCompat.getTransitionName(sharedView) // Meno na spojenie ) startActivity(intent, options.toBundle())V prijímajúcej aktivite:
// V metóde onCreate alebo onViewCreated (pre fragment) supportPostponeEnterTransition() // Odložiť animáciu vstupu, kým View nebudú pripravené // Následne, keď sú View pripravené (napríklad pri načítaní obrázka): supportStartPostponedEnterTransition()V XML rozložení oboch obrazoviek:
<ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:transitionName="image_transition" /> <!-- Meno na spojenie --> -
Component Animations (Navigation Component): Ak sa používa Navigation Component, prechodové animácie je možné nastaviť priamo v grafe navigácie.
<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" />
Výber spôsobu závisí od použitej architektúry (Activity, Fragments, Navigation Component) a požadovaného efektu.