Googles nächste Android-Version, Android 10 Q, wird einen systemweiten Dunkelmodus enthalten. Wie gehen Apps in Android Q mit dunklen Themen um?
In unserer erster Beitrag Wir erläuterten detailliert die Änderungen, die wir gegenüber dem in der Entwicklung befindlichen Android Q-Build festgestellt haben, und sprachen kurz über den Dunkelmodus, der alle begeistert. Um es noch einmal zusammenzufassen: Der in Android Q integrierte Dunkelmodus von Google kann über eine neue Option „Dunkler Modus“ in den Anzeigeeinstellungen aktiviert werden. Der Dunkelmodus kann entweder immer ausgeschaltet oder immer eingeschaltet sein oder nachts automatisch aktiviert und morgens deaktiviert werden. Der Dunkelmodus thematisiert die SystemUI (Lautstärkebedienfeld, Power-Menü, Schnelleinstellungsbedienfeld, Benachrichtigungen), die Einstellungs-App und das Framework (Akzentfarbe usw.).
Oben: Dunkler Modus in Android Q auf dem Google Pixel 3 XL. Unten: Light-Theme in Android Pie auf dem Google Pixel 2 XL.
Google möchte jedoch nicht nur, dass Systemelemente ein dunkles Thema haben. Sie arbeiten außerdem daran, sicherzustellen, dass alle ihre Erstanbieter-Apps den Dunkelmodus unterstützen, wenn der Benutzer den Schalter umlegt. Google Apps mögen Mitteilungen, Telefon, Kontakte, Nachricht, Spiele spielen, Youtube, Kartenund mehr wurden mit benutzerorientierten Dunkelmodus-Umschaltungen aktualisiert, während andere Apps dies mögen Google Chrome Wir bügeln noch alle Probleme vor der Google I/O 2019 aus. Google hat auch damit begonnen, App-Entwickler von Drittanbietern dazu zu ermutigen Nehmen Sie dunkle Themen an in ihren Apps, weil das Unternehmen zugibt, dass sie eine gute Akkulaufzeit haben (zumindest bei Smartphones mit OLED-Displays).
Um Entwicklern dabei zu helfen, ihre Apps mit Unterstützung für den Dunkelmodus von Android Q zu aktualisieren, stellt Google eine neue Entwickleroption bereit, die scheinbar alle Apps dazu zwingt, in den Dunkelmodus zu wechseln. Diese Option ist nicht für Benutzer gedacht, die alle Dinge im Dunkelmodus aktivieren möchten, da es für das System schwierig ist, die richtigen Farben für alle Apps auszuwählen, die nicht über einen nativen Dunkelmodus verfügen. Glücklicherweise hat Google bereits den Grundstein dafür gelegt, dass Apps den Dunkelmodus unterstützen, und es gibt bereits viele Apps, die dies tun Wenn die Option „Dunkelmodus überschreiben“ von Android Q aktiviert ist, sehen sie gut aus, auch wenn die App keinen benutzerorientierten Dunkelmodus hat Umschalten. Hier ist eine Sammlung von Screenshots von 24 verschiedenen Apps, die zeigen, wie sie aussehen, wenn ihnen mithilfe der Option „Dunkelmodus überschreiben“ von Android Q ein dunkler Modus aufgezwungen wird. Nicht jede App wird so gut aussehen, wie ich Ihnen weiter unten zeige.
Implementierung des Dunkelmodus in Android Q
In API Level 8 (Android 2.2 Froyo) führte Google ein -Nacht-Qualifikation für Ressourcen. App-Entwickler konnten mit setNightMode in zwischen Tag- und Nachtmodus wechseln UiModeManager. SetNightMode erfordert jedoch, dass sich das Gerät im Automodus oder im angedockten Modus befindet, wenn sich das Gerät auf API-Ebene 22 oder niedriger befindet. AppCompat v23.2 brachte die DayNight-Implementierung mit, die es Apps wie Reddit-Clients ermöglicht, mithilfe von AppCompatDeletegate.setDefaultNightMode() automatisch zwischen ihren Tag- und Nachtthemen basierend auf der Tageszeit zu wechseln. API-Level 28 (Android 9 Pie) hat dazu geführt, dass MODE_NIGHT_FOLLOW_SYSTEM (der Standardwert von setDefaultNightMode()) der benutzerdefinierten Systemeinstellung unter Einstellungen -> Entwickleroptionen -> Nachtmodus folgt. Google ist arbeiten an Verbesserungen an der DayNight-API in AppCompat, insbesondere im Hinblick auf „häufig auftretende Probleme“, wie z. B. Probleme mit WebView. Schließlich hat Google es aktiviert Erkennung des Nachtmodus und hat blockierte Apps ohne das MODIFY_DAY_NIGHT_MODE Signatur/privilegierte Berechtigung im Android Q-Framework. Die letztgenannte Änderung bedeutet, dass Apps den systemweiten Nachtmodus nicht mehr ändern können, was dazu führte, dass ein kürzlich aufgetretener Nachrichtenfehler Benutzer in Android Pie verwirrte.
Aktualisieren: Ein aktualisieren zum AndroidX Die Support-Bibliothek erleichtert Entwicklern die automatische Aktivierung von Dunkelmodi in ihren Apps, wenn das Gerät in den Energiesparmodus wechselt.
Erzwingen des Dunkelmodus in Android Q
Anwendungen wie Snapchat, Slack, AOSP Email, AOSP Messaging, AOSP Dialer und viele mehr verfügen über „Night“-Ressourcenqualifikatoren, auch wenn sie dem Benutzer keine Möglichkeit bieten, die App im Nachtmodus zu verwenden. Andere Apps, die nicht über fest codierte -night-Ressourcenqualifikatoren verfügen, wie Facebook und Instagram, sehen möglicherweise gut aus, wenn das Override-Dark-Design von Android Q aktiviert ist. Instagram sieht gut aus, während Facebook noch viel Arbeit braucht. Bei meinen Tests unterscheidet sich die Entwickleroption „Nachtmodus überschreiben“ deutlich von der Farbumkehr in den Eingabehilfen – vielleicht Google beabsichtigt, mit dieser Funktion Entwicklern dabei zu helfen, dunkle Modi für ihre Apps zu erstellen, während die Android Q Developer Previews verfügbar sind fortlaufend. Wir werden jedoch nicht genau wissen, wie diese Funktion funktioniert, bis der Quellcode für Android Q veröffentlicht wird oder Google eine Dokumentation dazu veröffentlicht.
Das Überschreiben des Dunkelmodus in Android Q funktioniert am häufigsten in Apps, die WebViews verwenden.
Im "Kosten einer PixelfarbeIm Vortrag von Chris Banes und Alan Viverette von Google ermutigt das Duo Entwickler, dunkle Themen zu implementieren, indem sie:
- Verwenden der DayNight-API in AppCompat. Aktien-Widgets reagieren automatisch auf Änderungen im Nachtmodus, oder Sie können Ihrer App auch einen Schalter hinzufügen.
- Dynamisches Anwenden von Overlay-Themen zur Laufzeit durch Aufruf von getTheme().applyStyle(). Weitere Informationen finden Sie in diesem früheren Vortrag Hier.
- Strukturieren Sie Ihre App so, dass sie auf der Verwendung von Designattributen wie colorForeground, colorControlNormal, colorAccent usw. basiert.
- Hinzufügen von -night-Qualifizierern für Ihre Ressourcen. -night-Qualifizierer sollten für Ressourcen verwendet werden, bei denen es schwierig ist, Themenfarben zu extrahieren.
- Aktivieren Sie den invertierten Farbmodus (Einstellungen -> Farben -> Farbinversion), um eine schnelle Vorstellung davon zu erhalten, wie Ihre App im dunklen Modus aussehen wird. Wenn Sie einen Screenshot Ihrer App mit invertierten Farben machen möchten, sollten Sie sich darüber im Klaren sein, dass die Die Farbumkehr wird im Screenshot nicht angezeigt.
Bei der Veröffentlichung wird der Dunkelmodus von Android Q auf Google-Apps von Erstanbietern ausgeweitet, wir hoffen jedoch, dass Apps von Drittanbietern schnell dunkle Themen in ihre Apps übernehmen. Darüber hinaus hoffen wir, dass mehr Apps automatisch zu ihren Nachtthemen wechseln, wenn der Benutzer die systemweite Einstellung aktiviert. Im Moment ist Google Kontakte die einzige App, die ich gesehen habe, die das Thema automatisch ändert, wenn der systemweite Dunkelmodus von Android Q aktiviert ist. Wir werden sehen, wie sich die Dinge in ein paar Monaten entwickeln, wenn Android Q veröffentlicht wird, aber an alle Entwickler, die dies lesen: Nehmen Sie die dunkle Seite an!
Mit Input von LineageOS-Mitarbeitern Joey Rizzoli.