Intégré dans Android / Android Studio
4 façons de faire
- Les animations automatiques
animationLayoutChange.
- Les Gifs.
- Lottie
- Les « transitions programmées ».
- Les Motion Layout
Les animations automatiques
- Très simple ! C'est un argument à ajouter dans votre layout.
- Simpliste, simple transition.
Les GIF
- Simple (en utilisant GifView)
- Attention au poids…
- Mauvaise qualité…
Lottie
Les transitions programmées
- Animation d'un point A -> B.
- Piloté par le code
- Maintenance difficile ?
votreImageId.animate().translationYBy(450F).setDuration(1500).start();
Les Motion Layout
- Similaire aux « transitions programmées »
- Intégré dans Android Studio
- « Complexe » / « Habitude à prendre » / Concept d'animations
- Qualitatifs
- Documentation
Ajouter des méthodes dans des objets existants
Les fragments
Découper vos vues
L'objectif :
- Découper votre vue en élément réutilisable.
- Exemple « Bottom Bar Navigation »
- Une activité racine « contient les fragments »
- N fragments en fonctions des cas.
« Nécessite » une librairie
implementation "androidx.fragment:fragment-ktx:1.2.5"
implementation "androidx.navigation:navigation-fragment-ktx:2.3.2"
implementation "androidx.navigation:navigation-ui-ktx:2.3.2"
En réalité pas vraiment… mais parlons en !
La théorie
supportFragmentManager.commit {
replace(R.id.frame, fragment)
}
C'est là où l'organisation sera importante 🚀
- Une
activity « racine ».
- Des fragments (autant que de tabs par exemple).
La théorie « À la main »
Gestion à l'ancienne
Comment ça fonctionne ?
- Les menus sont déclarés dans
bottom_navigation_menu.xml.
- Lors du click, on charge le bon fragment (préalablement déclaré).
Voilà à quoi ça va ressembler

Android JetPack pour nous sauver
La version « moderne » / Navigation Graph
Ça fonctionne comment ? (pas de magie)
- Les menus sont déclarés dans
bottom_navigation_menu.xml.
- On déclare notre graph de navigation
mobile_navigation.xml (ensemble des pages accessibles, id correspondant au menu)
- On attache la navigation au
NavHostFragment:
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment?
NavigationUI.setupWithNavController(bottom_navigation, navHostFragment!!.navController)
On pratique…
Oui c'est « compliqué » je sais…
JetPack Compose
Plus de Fragment (en vrai c'est encore possible). Mais plutôt des composants, basés sur des états en code (beaucoup plus simple).