Dans ce labo, nous continuerons d'améliorer notre application de
liste d'épicerie Brocoli. Nous ajouterons la possibilité pour
l'utilisateur de passer du mode clair au mode sombre à l'aide d'une
glissière switch. La préférence de l'utilisateur sera par la suite
sauvegardé à l'aide de SharedPreferences
.
Commencez par cloner votre projet brocoli de Gitlab. Si votre projet n'est pas fonctionnel, vous pouvez utiliser le mien ici :
https://git.dti.crosemont.quebec/pmartel/brocoli-android
activity_main.xml
La première étape consiste à ajouter un widget de type switch au bas de la page. Par défaut, le mode clair est activé. Lorsque la glissière est cliquée, le mode sombre s'active. Vous pouvez utiliser les émojis 🌞 et 🌛 pour représenter les deux modes.
MainActivity.kt
Dans votre activité, ajoutez le code pour écouter les clics
effectués sur la switch grâce à la méthode
setOnCheckedChangeListener
.
Voici le code qui vous permet de passer du mode clair au mode sombre et vice-versa:
var mode: Int = AppCompatDelegate.MODE_NIGHT_NO // mode clair
mode = AppCompatDelegate.MODE_NIGHT_YES // mode sombre
AppCompatDelegate.setDefaultNightMode(mode) // appliquer le mode
En vous basant sur le projet démo SharedPreferences, ajoutez le code nécessaire pour enregistrer la préférence utilisateur et restaurer celle-ci lors de la création de l'activité.
Pour tester votre implémentation, vous pouvez redémarrer l'application. La préférence de l'utilisateur doit être restaurée à son dernier état.