Google's volgende versie van Android, Android 10 Q, zal een systeembrede donkere modus bevatten. Hoe gaan apps in Android Q om met donkere thema’s?
In onze eerste post waarin we de veranderingen beschreven die we hebben gevonden in de in ontwikkeling zijnde Android Q-build die we hebben verkregen, spraken we kort over de donkere modus waar iedereen enthousiast over is. Om samen te vatten: de ingebouwde donkere modus van Google in Android Q kan worden ingeschakeld via een nieuwe “Donkere modus” -optie in Weergave-instellingen. De donkere modus kan altijd uit of altijd aan zijn, of 's nachts automatisch worden ingeschakeld en' s ochtends worden uitgeschakeld. De donkere modus heeft een thema in de SystemUI (volumepaneel, power-menu, paneel Snelle instellingen, meldingen), de app Instellingen en het raamwerk (accentkleur, enz.).
Boven: Donkere modus in Android Q op de Google Pixel 3 XL. Onder: Lichtthema in Android Pie op de Google Pixel 2 XL.
Google wil echter niet alleen dat systeemelementen een donker thema hebben. Ze werken er ook aan om ervoor te zorgen dat al hun eigen apps de donkere modus ondersteunen wanneer de gebruiker de schakelaar omdraait. Google-apps zoals
Berichten, Telefoon, Contacten, Nieuws, Spellen spelen, YouTube, Kaarten, en meer zijn bijgewerkt met gebruikersgerichte donkere modus-schakelaars, terwijl andere apps dat leuk vinden Google Chrome zijn nog steeds bezig met het gladstrijken van eventuele knikken vóór Google I/O 2019. Google is ook begonnen externe app-ontwikkelaars aan te moedigen dit te doen omarm donkere thema's in hun apps omdat het bedrijf toegeeft dat ze geweldig zijn voor de levensduur van de batterij (tenminste op smartphones met OLED-schermen).Om ontwikkelaars te helpen hun apps bij te werken met ondersteuning voor de donkere modus van Android Q, biedt Google een nieuwe ontwikkelaarsoptie die alle apps lijkt te dwingen over te schakelen naar de donkere modus. Deze optie is niet bedoeld voor gebruikers die alles in de donkere modus willen, omdat het voor het systeem moeilijk is om de juiste kleuren te kiezen voor alle apps die geen native donkere modus hebben. Gelukkig heeft Google al de basis gelegd voor apps die de donkere modi ondersteunen, en er zijn al veel apps die dat doen ziet er goed uit als de optie voor het negeren van de donkere modus van Android Q is ingeschakeld, zelfs als de app geen op de gebruiker gerichte donkere modus heeft schakelaar. Hier is een verzameling schermafbeeldingen van 24 verschillende apps die laten zien hoe ze eruitzien als hen een donkere modus wordt opgedrongen met behulp van de override-schakelaar voor de donkere modus van Android Q. Niet elke app zal er even goed uitzien, zoals ik je hieronder laat zien.
Implementatie van de donkere modus in Android Q
In API-niveau 8 (Android 2.2 Froyo) heeft Google geïntroduceerd -nachtkwalificaties voor hulpbronnen. App-ontwikkelaars konden schakelen tussen dag- en nachtmodus met setNightMode in UiModeManager. SetNightMode vereist echter dat het apparaat in de automodus of in de dockmodus staat als het apparaat zich op API-niveau 22 of lager bevindt. AppCompat v23.2 bracht de DayNight-implementatie, waardoor apps zoals Reddit-clients automatisch konden schakelen tussen hun dag- en nachtthema's op basis van het tijdstip van de dag met behulp van AppCompatDeletegate.setDefaultNightMode(). API-niveau 28 (Android 9 Pie) heeft ervoor gezorgd dat MODE_NIGHT_FOLLOW_SYSTEM (de standaardwaarde van setDefaultNightMode()) de door de gebruiker gedefinieerde systeeminstelling volgt in Instellingen --> Opties voor ontwikkelaars --> Nachtmodus. Google wel werken aan verbeteringen aan de DayNight API in AppCompat, vooral met betrekking tot "veel voorkomende problemen" zoals problemen met WebView. Ten slotte heeft Google dit ingeschakeld detectie van nachtmodus en heeft geblokkeerde apps zonder de MODIFY_DAY_NIGHT_MODE handtekening/bevoorrechte toestemming in het Android Q-framework. Deze laatste wijziging betekent dat apps de systeembrede nachtmodus niet meer kunnen wijzigen, waardoor een recente bug in Berichten gebruikers in Android Pie in verwarring kon brengen.
Update: Een update naar de AndroidX De ondersteuningsbibliotheek maakt het voor ontwikkelaars gemakkelijker om automatisch de donkere modi in hun apps in te schakelen wanneer het apparaat naar de batterijbesparingsmodus gaat.
De donkere modus forceren in Android Q
Applicaties zoals Snapchat, Slack, AOSP Email, AOSP Messaging, AOSP Dialer en nog veel meer hebben -night resource kwalificaties, zelfs als ze de gebruiker geen manier bieden om de app met de nachtmodus te gebruiken. Andere apps die geen hardgecodeerde kwalificaties voor nachtbronnen hebben, zoals Facebook en Instagram, zien er wel of niet goed uit als het donkere thema van Android Q is ingeschakeld. Instagram ziet er prima uit, terwijl Facebook nog veel werk nodig heeft. Uit mijn tests blijkt dat de ontwikkelaarsoptie voor het negeren van de nachtmodus heel anders is dan de kleurinversie in de toegankelijkheidsinstellingen, misschien Google is van plan met deze functie ontwikkelaars te helpen donkere modi voor hun apps te creëren terwijl de Android Q Developer Previews beschikbaar zijn voortdurende. We zullen echter pas weten hoe deze functie precies werkt als de broncode voor Android Q wordt vrijgegeven of Google er documentatie voor publiceert.
Het negeren van de donkere modus in Android Q werkt het meest in apps die WebViews gebruiken.
In de "Kosten van een pixelkleurIn de talk gepresenteerd door Chris Banes en Alan Viverette van Google moedigt het duo ontwikkelaars aan om duistere thema's te implementeren door:
- Met behulp van de DayNight-API in AppCompat. Stock-widgets reageren automatisch op veranderingen in de nachtmodus, of u kunt ook een schakelaar in uw app toevoegen.
- Overlay-thema's dynamisch toepassen tijdens runtime door getTheme().applyStyle() aan te roepen. Meer informatie vindt u in dit eerdere gesprek hier.
- Uw app zo structureren dat deze kan vertrouwen op het gebruik van themakenmerken zoals colorForeground, colorControlNormal, colorAccent, enz.
- -Night-kwalificaties toevoegen voor uw bronnen. -nachtkwalificaties moeten worden gebruikt voor bronnen die moeilijk te extraheren themakleuren hebben.
- Schakel de omgekeerde kleurenmodus in (Instellingen --> Kleuren --> Kleurinversie) om snel een idee te krijgen van hoe uw app eruit zal zien in de donkere modus. Als u een screenshot van uw app met omgekeerde kleuren wilt maken, moet u er rekening mee houden dat de kleurinversie verschijnt niet in de schermafbeelding.
Bij de release zal de donkere modus van Android Q zich uitbreiden naar eigen Google-apps, maar we hopen dat apps van derden snel donkere thema's in hun apps zullen opnemen. Bovendien hopen we dat meer apps automatisch overschakelen naar hun nachtthema's wanneer de gebruiker de systeembrede instelling inschakelt. Op dit moment is de enige app die ik heb gezien die automatisch van thema verandert wanneer de systeembrede donkere modus van Android Q is ingeschakeld, Google Contacten. We zullen zien hoe het over een paar maanden zal aflopen als Android Q uitkomt, maar voor alle ontwikkelaars die dit lezen: omarm de duistere kant!
Met input van LineageOS-bijdrager Joey Rizzoli.