Table des matières
Bonnes pratiques
Tout est dans la documentation de Material Design 3
.
https://m3.material.io/foundations/layout
Dimension de la zone cliquable : minimum 48*48dp. Si le composant fait une taille inférieure, il faut que la zone en dehors du composant soit cliquable jusqu'à une dimension minimale de 48*48dp.
Composants
DrawerLayout
Le DrawerLayout est un conteneur qui permet d'afficher une sorte de popup avec une liste d'action possible : des boutons ou des images.
Le problème est que, parfois, on souhaite que l'action soit effectuée une fois que l'animation de disparition du DrawerLayout terminée et non pas directement depuis l'événement setOnClickListener
.
La solution est de mettre l'action dans une variable Runnable
.
drawerLayout.addDrawerListener(new DrawerLayout.SimpleDrawerListener() { @Override public void onDrawerOpened(final View drawerView) { callDrawerClosed = () -> { // Action par défaut si le DrawerLayout est fermé sans cliquer sur une action. }; } @Override public void onDrawerClosed(final View drawerView) { callDrawerClosed.run(); } });
Et bien sûr ne pas oublier d'assigner l'action dans callDrawerClosed
pour chaque action possible du DrawerLayout
.
RelativeLayout
Utiliser à la place ConstraintLayout
.
ConstraintLayout
Ce composant permet de placer des composants à distance régulière en eux.
- Regrouper plusieurs composants entre eux
Il faut pour cela placer un composant invisible dans la chaîne des widgets. Puis placer un composant avant et après ce composant invisible.
Évidemment, il serait peut-être aussi beaucoup plus facile de placer un ConstraintLayout
dans la chaîne et mettre les composants dans ce sous layout.
Constraint Layout group multiple views as a single item in the chain Archive du 20/11/2021 le 23/08/2023
MotionScene
Permet de faire des animations pilotables via la main.
https://developer.android.com/develop/ui/views/animations/motionlayout
https://developer.android.com/develop/ui/views/animations/motionlayout/carousel
https://developer.android.com/develop/ui/views/animations/motionlayout/examples