La prochaine version d'Android de Google, Android 10 Q, inclura un mode sombre à l'échelle du système. Comment les applications d’Android Q géreront-elles les thèmes sombres ?
Dans notre premier poste détaillant les changements que nous avons trouvés dans la version en développement d'Android Q que nous avons obtenue, nous avons brièvement parlé du mode sombre qui a enthousiasmé tout le monde. Pour récapituler, le mode sombre intégré de Google dans Android Q peut être activé via une nouvelle option « Mode sombre » dans les paramètres d’affichage. Le mode sombre peut être soit toujours désactivé, toujours activé, soit activé automatiquement la nuit et désactivé le matin. Le mode sombre thème le SystemUI (panneau de volume, menu d'alimentation, panneau Paramètres rapides, notifications), l'application Paramètres et le cadre (couleur d'accent, etc.).
Ci-dessus: le mode sombre dans Android Q sur le Google Pixel 3 XL. Ci-dessous: thème Light dans Android Pie sur le Google Pixel 2 XL.
Cependant, Google ne souhaite pas seulement que les éléments du système aient un thème sombre. Ils s'efforcent également de s'assurer que toutes leurs applications propriétaires prennent en charge le mode sombre lorsque l'utilisateur appuie sur le commutateur. Applications Google comme messages, Téléphone, Contacts, Nouvelles, Jouer à des jeux, Youtube, Plans, et d'autres ont été mis à jour avec des bascules en mode sombre destinées à l'utilisateur, tandis que d'autres applications comme Google Chrome sont encore en train de résoudre les problèmes avant Google I/O 2019. Google a également commencé à encourager les développeurs d'applications tierces à adopter des thèmes sombres dans leurs applications, car la société admet qu'elles sont excellentes pour la durée de vie de la batterie (du moins sur les smartphones dotés d'écrans OLED.)
Pour aider les développeurs à mettre à jour leurs applications avec la prise en charge du mode sombre d'Android Q, Google propose une nouvelle option de développement qui semble forcer toutes les applications à passer en mode sombre. Cette option n’est pas destinée aux utilisateurs qui souhaitent tout mettre en mode sombre, car il est difficile pour le système de choisir les bonnes couleurs pour toutes les applications qui ne disposent pas de mode sombre natif. Heureusement, Google a déjà jeté les bases pour que les applications prennent en charge les modes sombres, et il existe déjà de nombreuses applications qui le permettent. l'apparence est parfaite avec l'option de remplacement du mode sombre d'Android Q activée, même si l'application ne dispose pas d'un mode sombre destiné à l'utilisateur basculer. Voici une collection de captures d'écran de 24 applications différentes montrant à quoi elles ressemblent lorsqu'un mode sombre leur est imposé à l'aide de la bascule de remplacement du mode sombre d'Android Q. Toutes les applications ne seront pas aussi belles, comme je vais vous le montrer ci-dessous.
Implémentation du mode sombre dans Android Q
Dans l'API niveau 8 (Android 2.2 Froyo), Google a introduit -qualifications nocturnes pour les ressources. Les développeurs d'applications pouvaient basculer entre le mode jour et nuit en utilisant setNightMode dans UiModeManager. Cependant, setNightMode nécessite que l'appareil soit en mode voiture ou en mode ancré si l'appareil est au niveau API 22 ou inférieur. AppCompat v23.2 a apporté l'implémentation DayNight, permettant aux applications comme les clients Reddit de basculer automatiquement entre leurs thèmes de jour et de nuit en fonction de l'heure de la journée à l'aide de AppCompatDeletegate.setDefaultNightMode(). Le niveau d'API 28 (Android 9 Pie) a fait en sorte que MODE_NIGHT_FOLLOW_SYSTEM (la valeur par défaut de setDefaultNightMode()) suive le paramètre système défini par l'utilisateur dans Paramètres --> Options du développeur --> Mode nuit. Google est travaille sur améliorations de l'API DayNight dans AppCompat, notamment en ce qui concerne les « problèmes fréquemment rencontrés » tels que les problèmes avec WebView. Enfin, Google a activé détection du mode nuit et a applications bloquées sans le MODIFY_DAY_NIGHT_MODE signature/autorisation privilégiée dans le cadre d'Android Q. Ce dernier changement signifie que les applications ne peuvent plus modifier le mode nuit à l'échelle du système, ce qui a permis à un récent bug de Messages de semer la confusion dans Android Pie.
Mise à jour: Un mise à jour au AndroidX La bibliothèque de support permettra aux développeurs d'activer plus facilement les modes sombres dans leurs applications lorsque l'appareil passe en mode d'économie de batterie.
Forcer le mode sombre dans Android Q
Des applications telles que Snapchat, Slack, AOSP Email, AOSP Messaging, AOSP Dialer et bien d'autres ont des qualificatifs de ressources de nuit, même si elles ne fournissent pas à l'utilisateur un moyen d'utiliser l'application en mode nuit. D'autres applications qui n'ont pas de qualificatifs de ressources codés en dur, comme Facebook et Instagram, peuvent ou non avoir une belle apparence avec le thème sombre de remplacement d'Android Q activé. Instagram a l'air bien, tandis que Facebook a besoin de beaucoup de travail. D'après mes tests, l'option de remplacement du mode nuit pour les développeurs est très distincte de l'inversion des couleurs dans les paramètres d'accessibilité, peut-être Google prévoit que cette fonctionnalité aidera les développeurs à créer des modes sombres pour leurs applications tandis que les aperçus des développeurs Android Q sont disponibles. en cours. Cependant, nous ne saurons pas exactement comment cette fonctionnalité fonctionne jusqu'à ce que le code source d'Android Q soit publié ou que Google publie sa documentation.
Le remplacement du mode sombre dans Android Q est le plus problématique dans les applications qui utilisent WebViews.
Dans le "Coût d'une couleur de pixel" conférence présentée par Chris Banes et Alan Viverette de Google, le duo encourage les développeurs à implémenter des thèmes sombres en :
- Utilisation de l'API DayNight dans AppCompat. Les widgets boursiers répondent automatiquement aux changements en mode nuit, ou vous pouvez également ajouter un commutateur dans votre application.
- Application dynamique de thèmes de superposition au moment de l'exécution en appelant getTheme().applyStyle(). Plus d'informations peuvent être trouvées dans cette conférence précédente ici.
- Structurer votre application pour qu'elle s'appuie sur l'utilisation d'attributs de thème tels que colorForeground, colorControlNormal, colorAccent, etc.
- Ajout de qualificatifs -night pour vos ressources. -les qualificatifs de nuit doivent être utilisés pour les ressources qui ont du mal à extraire les couleurs du thème.
- Activation du mode couleurs inversées (Paramètres -> Couleurs -> Inversion des couleurs) pour avoir une idée rapide de l'apparence de votre application en mode sombre. Si vous souhaitez prendre une capture d'écran de votre application avec des couleurs inversées, sachez que le l'inversion des couleurs n'apparaîtra pas dans la capture d'écran.
Lors de sa sortie, le mode sombre d'Android Q s'étendra aux applications Google propriétaires, mais nous espérons que les applications tierces adopteront rapidement les thèmes sombres dans leurs applications. De plus, nous espérons voir davantage d'applications passer automatiquement à leurs thèmes de nuit lorsque l'utilisateur active le paramètre à l'échelle du système. À l'heure actuelle, la seule application que j'ai vue qui change automatiquement de thème lorsque le mode sombre à l'échelle du système Android Q est activé est Google Contacts. Nous verrons comment les choses évolueront dans quelques mois, lors de la sortie d'Android Q, mais à tous les développeurs qui lisent ceci: adoptez le côté obscur !
Avec la contribution du contributeur LineageOS Joey Rizzoli.