Mode sombre (thème sombre) est un jeu de couleurs dans lequel l'arrière-plan de l'écran devient sombre (gris foncé ou noir), tandis que le texte et les éléments deviennent clairs. Le Mode sombre réduit la fatigue oculaire en cas de faible luminosité, économise la batterie sur les écrans OLED (jusqu'à 60% selon Google, 2019) et répond aux exigences d'accessibilité pour les utilisateurs photophobes. Dans iOS 13 et Android 10, le Mode sombre est devenu une option système — l'utilisateur active le thème sombre globalement, et l'application l'adopte automatiquement. Pour en savoir plus, consultez la documentation officielle d'Android sur le thème sombre.
Points clés
Mode sombre est un jeu de couleurs dans lequel l'arrière-plan de l'écran est sombre (généralement #121212 dans Android, #1C1C1E dans iOS), tandis que le texte et les éléments d'interface sont clairs. Contrairement à une simple inversion des couleurs, un Mode sombre de qualité utilise une palette soigneusement sélectionnée : fond gris foncé au lieu de noir pur (réduit l'effet de halo), saturation réduite des couleurs d'accent et ombres douces. La prise en charge système du Mode sombre est apparue dans iOS 13 (septembre 2019) et Android 10 (septembre 2019).
La principale raison de son adoption est le confort de l'utilisateur. En cas de faible luminosité (le soir, dans l'obscurité), un écran blanc brillant provoque une fatigue oculaire et peut déclencher des maux de tête. Le Mode sombre réduit la luminosité de l'écran sans sacrifier la lisibilité. Pour les utilisateurs photophobes ou sensibles à la lumière, le thème sombre n'est pas une option mais la seule façon d'utiliser une application confortablement. Selon Android Developers, plus de 30% des utilisateurs d'Android gardent le thème sombre activé en permanence.
Le Mode sombre économise la batterie sur les écrans OLED. Contrairement au LCD, où le rétroéclairage est toujours allumé, les pixels OLED s'illuminent eux-mêmes. Une couleur sombre signifie que le pixel est éteint — la consommation d'énergie diminue. Selon Google (Android Developers Blog, 2019), sur un Pixel avec écran OLED, le Mode sombre à 100% de luminosité réduit la consommation d'énergie de 60% par rapport au thème clair. Sur les écrans LCD, l'économie est minime (environ 3–5%) car le rétroéclairage de la matrice fonctionne indépendamment de la couleur du pixel.
La prise en charge système du Mode sombre a traversé plusieurs étapes. iOS 13 (2019) a introduit un thème sombre global via UIUserInterfaceStyle. Android 10 (2019) a ajouté Force Dark Mode pour les applications sans thème sombre propre. Android 12 (2021) avec Material You a commencé à générer automatiquement une palette sombre à partir des fonds d'écran. iOS 15 (2021) a étendu l'API pour Safari et le contenu web. Selon StatCounter (2026), 82% des 100 principales applications de l'App Store et de Google Play prennent en charge le Mode sombre.
| Plateforme | Version | Année | Innovation clé |
|---|---|---|---|
| iOS | 13 | 2019 | UIUserInterfaceStyle, traitCollection.userInterfaceStyle |
| Android | 10 (Q) | 2019 | Force Dark Mode, thème DayNight d'AppCompat |
| iOS | 15 | 2021 | Thème sombre pour le contenu web et Safari |
| Android | 12 | 2021 | Material You Dynamic Themes avec palette sombre générée automatiquement |
L'API Mode sombre iOS est basée sur le protocole UITraitEnvironment. Chaque UIViewController et UIView possède la propriété traitCollection.userInterfaceStyle, qui peut être .unspecified, .light ou .dark. Lorsque le thème système change, iOS appelle la méthode traitCollectionDidChange(_:). Le développeur doit mettre à jour les couleurs dans cette méthode, ou utiliser des couleurs dynamiques (UIColor(dynamicProvider:)) qui basculent automatiquement entre les palettes claire et sombre.
class ViewController: UIViewController {
@IBOutlet var titleLabel: UILabel!
override func traitCollectionDidChange(_: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
if traitCollection.hasDifferentColorAppearance(comparedTo: previousTraitCollection) {
updateColors()
}
}
func updateColors() {
let isDark = traitCollection.userInterfaceStyle == .dark
view.backgroundColor = isDark ? UIColor(named: "darkBackground") : .systemBackground
titleLabel.textColor = isDark ? .white : .darkText
}
}
// Forcer l'activation du Mode sombre
window.overrideUserInterfaceStyle = .dark
Les couleurs dynamiques — la meilleure façon d'implémenter le Mode sombre dans iOS. UIColor(named:) charge automatiquement différentes valeurs du catalogue d'actifs pour les apparences .light et .dark. Il suffit de définir une couleur dans Assets.xcassets avec deux variantes (Any Appearance + Dark Appearance), et UIKit sélectionnera automatiquement la bonne. Les couleurs système dynamiques (UIColor.systemBackground, .label, .secondaryLabel) prennent déjà en charge le Mode sombre et changent automatiquement.
SwiftUI prend en charge le Mode sombre nativement. Toutes les couleurs et modifications standard (Color.primary, .background, Color(UIColor.systemBackground)) s'adaptent automatiquement. Pour les couleurs personnalisées, utilisez Color(uiColor:) avec un UIColor dynamique ou la variable d'environnement @Environment(\.colorScheme) pour une vérification explicite du thème. La vue SwiftUI se redessine automatiquement lors du changement de thème, sans avoir à appeler traitCollectionDidChange.
struct ThemeView: View {
@Environment(\.colorScheme) var colorScheme
var body: some View {
Text("Mode sombre")
.foregroundColor(colorScheme == .dark ? .white : .black)
.background(colorScheme == .dark ? Color(.systemGray6) : .white)
}
}
Le Mode sombre Android est implémenté via la bibliothèque AppCompat et le thème Theme.AppCompat.DayNight. Le jour, le thème clair est utilisé, la nuit — le sombre. L'activation forcée est définie via AppCompatDelegate.setDefaultNightMode() : MODE_NIGHT_YES (sombre), MODE_NIGHT_NO (clair), MODE_NIGHT_FOLLOW_SYSTEM (système). Les ressources sont divisées en claires (res/values/styles.xml) et sombres (res/values-night/styles.xml).
// Forcer l'activation du thème sombre
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
// Définir avant super.onCreate
AppCompatDelegate.setDefaultNightMode(
AppCompatDelegate.MODE_NIGHT_YES
)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
// Déterminer le thème actuel
private val isDarkMode: Boolean
get() = (resources.configuration.uiMode and
Configuration.UI_MODE_NIGHT_MASK) ==
Configuration.UI_MODE_NIGHT_YES
}
// Enregistrer le mode nuit dans AndroidManifest.xml
// android:configChanges="uiMode"
Force Dark Mode est une fonctionnalité système d'Android 10+ qui inverse automatiquement les couleurs des applications sans support de thème sombre. Elle est activée via les options développeur ou via l'attribut android:forceDarkAllowed="true" dans le thème. Il s'agit d'une solution temporaire : pour la production, vous devez implémenter votre propre palette sombre via values-night, sinon la qualité visuelle sera médiocre (icônes inversées, couleurs difficiles à lire).
Material You (Android 12+) génère automatiquement 5 couleurs clés à partir du fond d'écran de l'appareil : primary, secondary, tertiary, neutral, neutralVariant. Pour chaque couleur, des palettes claire et sombre sont créées. Le développeur utilise des attributs : ?attr/colorPrimary, ?attr/colorOnPrimary, ?attr/colorSurface. Le système sélectionne lui-même la variante pour le thème actuel. Dynamic Color est pris en charge sur Android 12+ avec Material Design 3 (composant com.google.android.material:material).
// values/themes.xml — thème clair
<style name="Theme.MyApp" parent="Theme.Material3.DayNight">
<item name="colorPrimary">@color/primary_light</item>
<item name="colorOnPrimary">@color/on_primary_light</item>
</style>
// values-night/themes.xml — thème sombre
<style name="Theme.MyApp" parent="Theme.Material3.DayNight">
<item name="colorPrimary">@color/primary_dark</item>
<item name="colorOnPrimary">@color/on_primary_dark</item>
</style>
La conception du Mode sombre n'est pas une simple inversion des couleurs. Google Material Design recommande d'utiliser du gris foncé (#121212) au lieu du noir pur. Le noir pur (#000000) crée un contraste trop élevé avec le texte blanc, provoquant un effet de halo (auréole autour des lettres). Le niveau d'élévation des éléments est exprimé par la couleur : plus l'élément est élevé, plus son fond est clair. Une carte sur le fond — #1E1E1E, dialogue — #2D2D2D, panneau de navigation — #383838.
Le contraste des couleurs dans le Mode sombre doit être inférieur à celui du Mode clair. Material Design recommande : texte primaire — blanc (#FFFFFF) avec une opacité de 87%, secondaire — 60%, désactivé — 38%. Les couleurs d'accent doivent être moins saturées : si dans le thème clair primary = #6200EE, alors dans le sombre — #BB86FC (violet clair et doux). Selon WCAG 2.1, un contraste minimum de 4.5:1 pour le texte normal doit être maintenu dans les deux thèmes.
| Élément | Mode clair | Mode sombre | Contraste |
|---|---|---|---|
| Arrière-plan de l'écran | #FFFFFF | #121212 | — |
| Carte | #F5F5F5 | #1E1E1E | Élévation 1dp |
| Texte primaire | #000000 87% | #FFFFFF 87% | 15.8:1 |
| Texte secondaire | #000000 60% | #FFFFFF 60% | 9.0:1 |
| Couleur primaire | #6200EE | #BB86FC | 7.2:1 |
Images et icônes nécessitent un traitement séparé dans le thème sombre. Les icônes avec transparence doivent être recolorées en couleurs claires. Les photos avec des fonds brillants peuvent éblouir — il est recommandé de réduire la luminosité de 20 à 30% ou d'ajouter une superposition semi-transparente. Pour les logos et les éléments de marque, utilisez la version pour fond sombre. Le catalogue d'actifs iOS et VectorDrawable Android prennent en charge des ressources séparées pour les thèmes clair et sombre.
Le choix entre les thèmes dépend des conditions d'utilisation, du type de contenu et des préférences de l'utilisateur. Une étude du Nielsen Norman Group (2020) a montré : sous un éclairage normal, le Mode clair offre une vitesse de lecture de 15 à 20% supérieure. Cependant, dans des conditions de faible luminosité, le Mode sombre réduit la fatigue oculaire et améliore la lisibilité. Pour les interfaces avec de grandes quantités de texte (articles, documents), le Mode clair est généralement préférable.
La consommation d'énergie est un argument clé pour le Mode sombre sur OLED. Selon Google (2019), YouTube en thème sombre sur un écran OLED consomme 43% moins d'énergie qu'en thème clair. Google Maps — 32%. Plus l'interface est lumineuse et plus le niveau de luminosité de l'écran est élevé, plus les économies sont importantes. Sur les écrans LCD, les économies ne dépassent pas 5%. Pour les utilisateurs qui travaillent beaucoup avec l'application en extérieur sous un soleil éclatant, le Mode clair reste la seule option lisible.
| Critère | Mode sombre | Mode clair |
|---|---|---|
| Lisibilité sous une lumière vive | Faible (reflets sur fond sombre) | Élevée (contraste maximal) |
| Fatigue oculaire dans l'obscurité | Faible | Élevée (lumière vive) |
| Consommation OLED | Faible (jusqu'à -60%) | Élevée |
| Consommation LCD | Similaire (±5%) | Similaire (±5%) |
| Perception des couleurs | Distordue (saturation réduite) | Naturelle |
| Accommodation | Nécessite un temps d'adaptation | Naturelle pour l'œil |
Recommandations d'IT Sectr — nous implémentons les deux thèmes avec des options de bascule : système (suivre le système), sombre, clair. La bascule automatique ne doit pas être la seule option — un utilisateur peut vouloir le thème sombre pendant la journée (pour les migraines) ou le thème clair la nuit (pour la lecture). Dans nos projets, nous ajoutons un sélecteur de thème dans les paramètres du profil et mémorisons le choix. Pour les applications avec du contenu premium (photos, vidéos), un aperçu du thème avant application est recommandé.
Questions fréquentes
Oui, sur les écrans OLED, les économies peuvent atteindre 60% (Google, Pixel, 2019). Plus l'interface est lumineuse, plus les économies sont importantes. Sur les écrans LCD, la différence est minime — jusqu'à 5%, car le rétroéclairage de la matrice fonctionne indépendamment de la couleur du pixel. Si un utilisateur utilise activement une application avec des éléments principalement blancs, le Mode sombre offre un effet maximal.
Mode sombre est le concept général d'un schéma d'interface sombre. Material You Dynamic Themes (Android 12+) est une implémentation qui génère automatiquement une palette sombre à partir du fond d'écran de l'appareil. L'utilisateur peut forcer l'activation du thème sombre, et Material You ajustera les couleurs à une palette personnalisée au lieu d'utiliser des couleurs sombres fixes.
Allez dans Réglages → Affichage et luminosité → Apparence et sélectionnez « Sombre ». Par programmation : définissez window.overrideUserInterfaceStyle = .dark dans AppDelegate. La bascule automatique selon un horaire (coucher/lever du soleil ou heure personnalisée) est également disponible, permettant des transitions fluides entre les thèmes au cours de la journée.
forceDarkMode (Android 10+) est une option système pour forcer le thème sombre dans les applications sans support natif. Android inverse automatiquement les couleurs de l'écran. Pour un thème sombre de qualité, le développeur doit implémenter sa propre palette via values-night et désactiver forceDarkAllowed.
Le Mode sombre système est apparu dans iOS 13 (septembre 2019) et Android 10 (septembre 2019). Avant cela, les développeurs implémentaient les thèmes sombres eux-mêmes. En 2026, plus de 80% des principales applications de l'App Store et de Google Play prennent en charge le Mode sombre, et Apple et Google le recommandent comme une option obligatoire.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi