Que faut-il faire pour l'animation de transition entre les écrans?
sobes.tech IA
Réponse de l'IA
Pour l'animation de transition entre écrans sur Android, plusieurs approches peuvent être utilisées:
-
Animations d'activité (Activity Animations): Définies dans les thèmes ou par programmation. Permettent de définir des animations d'entrée et de sortie standard pour les activités.
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) }Fichiers d'animation (par exemple,
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> -
Animations de fragments (Fragment Animations): Définies lors de la transaction de fragment.
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() -
Transitions d'éléments partagés (Shared Element Transitions): Permettent d'animer la transition d'un ou plusieurs View entre écrans, créant un effet de continuité. Nécessitent d'activer le support de transition dans le thème.
Dans l'activité source:
val options = ActivityOptionsCompat.makeSceneTransitionAnimation( this, sharedView, // View pour l'animation ViewCompat.getTransitionName(sharedView) // Nom pour le lien ) startActivity(intent, options.toBundle())Dans l'activité de destination:
// Dans la méthode onCreate ou onViewCreated (pour les fragments) supportPostponeEnterTransition() // Retarder l'animation d'entrée jusqu'à ce que les Views soient prêtes // Ensuite, lorsque les Views sont prêtes (par exemple, dans un listener de chargement d'image): supportStartPostponedEnterTransition()En XML pour les deux écrans:
<ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:transitionName="image_transition" /> <!-- Nom pour le lien --> -
Animations de composants (Navigation Component): Si le Navigation Component est utilisé, les animations de transition peuvent être définies directement dans le graphique de navigation.
<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" />
Le choix de la méthode dépend de l'architecture utilisée (Activity, Fragments, Navigation Component) et de l'effet souhaité.