Googles neste versjon av Android, Android 10 Q, vil inkludere en systemomfattende mørk modus. Hvordan vil apper i Android Q håndtere mørke temaer?
I vår første innlegg med detaljer om endringene vi fant fra Android Q-bygget i utvikling vi fikk, snakket vi kort om den mørke modusen som gleder alle. For å oppsummere kan Googles innebygde mørke modus i Android Q aktiveres via et nytt "Mørk modus"-alternativ i skjerminnstillinger. Mørk modus kan enten være alltid av, alltid på, eller aktivert automatisk om natten og deaktivert om morgenen. Mørk modus temaer SystemUI (volumpanel, strømmeny, Hurtiginnstillinger-panel, varsler), Innstillinger-app og rammeverk (aksentfarge osv.).
Over: Dark Mode i Android Q på Google Pixel 3 XL. Under: Lett tema i Android Pie på Google Pixel 2 XL.
Google vil imidlertid ikke bare at systemelementer skal ha mørkt tema. De jobber også med å sørge for at alle førstepartsappene deres støtter mørk modus når brukeren snur bryteren. Google-apper som Meldinger, Telefon
, Kontakter, Nyheter, Spille spill, YouTube, Kart, og flere har blitt oppdatert med brukervendte mørk modus-veksler, mens andre apper liker Google Chrome stryker fortsatt ut eventuelle knekk før Google I/O 2019. Google har også begynt å oppmuntre tredjeparts apputviklere til det omfavne mørke temaer i appene sine fordi selskapet innrømmer at de er gode for batterilevetid (i det minste på smarttelefoner med OLED-skjermer.)For å hjelpe utviklere med å oppdatere appene sine med støtte for Android Qs mørke modus, tilbyr Google et nytt utvikleralternativ som ser ut til å tvinge alle apper til å bytte til mørk modus. Dette alternativet er ikke ment for brukere som ønsker å bruke alle tingene i mørk modus, fordi det er vanskelig for systemet å velge de riktige fargene for alle apper som ikke har en naturlig mørk modus. Heldigvis har Google allerede lagt grunnlaget for apper som støtter mørke moduser, og det er allerede mange apper som ser bra ut med Android Qs overstyringsalternativ for mørk modus aktivert selv om appen ikke har en brukervendt mørk modus veksle. Her er en samling skjermbilder fra 24 forskjellige apper som viser hvordan de ser ut når en mørk modus blir tvunget til dem ved å bruke Android Qs overstyring av mørk modus. Ikke alle apper vil se like bra ut, som jeg skal vise deg nedenfor.
Implementering av Dark Mode i Android Q
I API-nivå 8 (Android 2.2 Froyo) introduserte Google -nattkvalifiseringer for ressurser. Apputviklere kan bytte mellom dag- og nattmodus ved å bruke setNightMode inn UiModeManager. SetNightMode krever imidlertid at enheten er i bilmodus eller i dokket modus hvis enheten er på API-nivå 22 eller lavere. AppCompat v23.2 brakte DayNight-implementeringen, og lar apper som Reddit-klienter automatisk bytte mellom dag- og natttemaene sine basert på klokkeslettet ved å bruke AppCompatDeletegate.setDefaultNightMode(). API-nivå 28 (Android 9 Pie) laget MODE_NIGHT_FOLLOW_SYSTEM (standardverdien til setDefaultNightMode()) følger den brukerdefinerte systeminnstillingen i Innstillinger --> Utvikleralternativer --> Nattmodus. Google er jobber med forbedringer av DayNight API i AppCompat, spesielt med hensyn til "ofte oppståtte problemer" som problemer med WebView. Til slutt har Google aktivert nattmodusdeteksjon og har blokkerte apper uten MODIFY_DAY_NIGHT_MODE signatur/privilegert tillatelse i Android Qs rammeverk. Den siste endringen betyr at apper ikke lenger kan endre nattmodusen for hele systemet, noe som tillot en nylig meldingsfeil for å forvirre brukere i Android Pie.
Oppdater: An Oppdater til AndroidX støttebibliotek vil gjøre det enklere for utviklere å automatisk aktivere mørke moduser i appene sine når enheten går inn i batterisparemodus.
Tvinge mørk modus i Android Q
Applikasjoner som Snapchat, Slack, AOSP Email, AOSP Messaging, AOSP Dialer og mange flere har -nattressurskvalifiseringer, selv om de ikke gir brukeren en måte å bruke appen på med nattmodus. Andre apper som ikke har hardkodede nattressurskvalifiseringer, som Facebook og Instagram, ser kanskje bra ut med Android Qs overstyrte mørketema slått på. Instagram ser bra ut, mens Facebook trenger mye arbeid. Fra min testing er utvikleralternativet for overstyring av nattmodus veldig forskjellig fra fargeinversjon i tilgjengelighetsinnstillinger – kanskje Google har til hensikt at denne funksjonen skal hjelpe utviklere med å lage mørke moduser for appene sine mens Android Q Developer Previews er pågående. Vi vet ikke nøyaktig hvordan denne funksjonen fungerer før kildekoden for Android Q er utgitt eller Google publiserer dokumentasjon for den.
Overstyr mørk modus i Android Q er mest ødelagt i apper som bruker WebViews.
i "Kostnaden for en Pixel Color" foredrag presentert av Chris Banes og Alan Viverette fra Google, oppfordrer duoen utviklere til å implementere mørke temaer ved å:
- Bruk av DayNight API i AppCompat. Aksjewidgeter reagerer automatisk på endringer i nattmodus, eller du kan legge til en bryter i appen din også.
- Bruke overleggstemaer dynamisk under kjøring ved å kalle getTheme().applyStyle(). Mer informasjon finner du i denne tidligere foredraget her.
- Strukturere appen din til å stole på bruk av temaattributter som colorForeground, colorControlNormal, colorAccent, etc.
- Legger til -nattkvalifiseringer for ressursene dine. -nattkvalifiseringer bør brukes for ressurser som har vanskelig for å trekke ut temafarger.
- Aktivering av invertert fargemodus (Innstillinger --> Farger --> Fargeinversjon) for å få en rask idé om hvordan appen din vil se ut i mørk modus. Hvis du vil ta et skjermbilde av appen din med inverterte farger, bør du være klar over at fargeinversjon vil ikke vises i skjermbildet.
Ved utgivelsen vil Android Qs mørke modus utvides til førsteparts Google-apper, men vi håper at tredjepartsapper raskt tar inn mørke temaer i appene sine. Videre håper vi å se flere apper automatisk endre til natttemaene deres når brukeren aktiverer systemomfattende innstilling. Akkurat nå er den eneste appen jeg har sett som automatisk endrer tema når Android Qs systemomfattende mørke modus er aktivert, er Google-kontakter. Vi får se hvordan ting blir om et par måneder når Android Q slippes, men til alle utviklere som leser dette: omfavn den mørke siden!
Med innspill fra LineageOS-bidragsyter Joey Rizzoli.