Tutto quello che sappiamo finora sulla modalità oscura di Android Q

La prossima versione di Android di Google, Android 10 Q, includerà una modalità oscura a livello di sistema. In che modo le app in Android Q gestiranno i temi scuri?

Nel nostro primo post dettagliando le modifiche che abbiamo riscontrato rispetto alla build Android Q in fase di sviluppo che abbiamo ottenuto, abbiamo parlato brevemente della modalità oscura che ha entusiasmato tutti. Per ricapitolare, la modalità oscura integrata di Google in Android Q può essere abilitata tramite una nuova opzione "Modalità oscura" nelle Impostazioni di visualizzazione. La modalità oscura può essere sempre disattivata, sempre attiva oppure attivata automaticamente di notte e disattivata al mattino. Temi in modalità oscura per SystemUI (pannello del volume, menu di accensione, pannello Impostazioni rapide, notifiche), app Impostazioni e framework (colore in risalto, ecc.).

Sopra: modalità oscura in Android Q su Google Pixel 3 XL. Sotto: tema Luce in Android Pie su Google Pixel 2 XL.

Tuttavia, Google non vuole che gli elementi del sistema abbiano solo temi scuri. Stanno anche lavorando per assicurarsi che tutte le loro app proprietarie supportino la modalità oscura quando l'utente attiva l'interruttore. App Google come

Messaggi, Telefono, Contatti, Notizia, Giocare, Youtube, Mappee altre ancora sono state aggiornate con l'attivazione/disattivazione della modalità oscura rivolta all'utente, mentre altre app simili Google Chrome stanno ancora risolvendo eventuali problemi prima di Google I/O 2019. Google ha anche iniziato a incoraggiare gli sviluppatori di app di terze parti a farlo abbraccia temi oscuri nelle loro app perché l'azienda ammette che sono ottimi per la durata della batteria (almeno sugli smartphone con display OLED).

Per aiutare gli sviluppatori ad aggiornare le proprie app con il supporto per la modalità oscura di Android Q, Google fornisce una nuova opzione sviluppatore che sembra forzare tutte le app a passare alla modalità oscura. Questa opzione non è destinata agli utenti che desiderano impostare tutte le cose in modalità oscura, perché è difficile per il sistema scegliere i colori giusti per tutte le app che non dispongono di una modalità oscura nativa. Fortunatamente, Google ha già gettato le basi affinché le app supportino le modalità oscure e ci sono già molte app che lo supportano stai bene con l'opzione di sostituzione della modalità oscura di Android Q abilitata anche se l'app non dispone di una modalità oscura rivolta all'utente attivare/disattivare. Ecco una raccolta di screenshot di 24 app diverse che mostrano come appaiono quando viene imposta loro una modalità oscura utilizzando l'attivazione/disattivazione della modalità oscura di Android Q. Non tutte le app avranno un bell'aspetto, come ti mostrerò di seguito.

Implementazione della modalità oscura in Android Q

Nel livello API 8 (Android 2.2 Froyo), Google ha introdotto -qualificazioni notturne per le risorse. Gli sviluppatori di app possono passare dalla modalità giorno a quella notturna utilizzando setNightMode in UiMode Manager. Tuttavia, setNightMode richiede che il dispositivo sia in modalità auto o in modalità dock se il dispositivo è al livello API 22 o inferiore. AppCompat v23.2 ha portato l'implementazione DayNight, consentendo ad app come i client Reddit di passare automaticamente dai temi diurni a quelli notturni in base all'ora del giorno utilizzando AppCompatDeletegate.setDefaultNightMode(). Il livello API 28 (Android 9 Pie) ha fatto sì che MODE_NIGHT_FOLLOW_SYSTEM (il valore predefinito di setDefaultNightMode()) segua l'impostazione di sistema definita dall'utente in Impostazioni --> Opzioni sviluppatore --> Modalità notturna. Google lo è lavorando su miglioramenti all'API DayNight in AppCompat, in particolare per quanto riguarda i "problemi riscontrati di frequente" come problemi con WebView. Infine, Google ha abilitato rilevamento della modalità notturna e ha app bloccate senza il MODIFY_DAY_NIGHT_MODE firma/autorizzazione privilegiata nel framework di Android Q. Quest'ultima modifica significa che le app non possono più modificare la modalità notturna a livello di sistema, che è ciò che ha consentito a un recente bug di Messaggi di confondere gli utenti in Android Pie.

Aggiornamento: UN aggiornamento al AndroidX la libreria di supporto renderà più semplice per gli sviluppatori abilitare automaticamente le modalità scure nelle loro app quando il dispositivo entra in modalità di risparmio batteria.

Forzare la modalità oscura in Android Q

Applicazioni come Snapchat, Slack, AOSP Email, AOSP Messaging, AOSP Dialer e molte altre hanno qualificatori di risorse -night, anche se non forniscono all'utente un modo per utilizzare l'app con la modalità notturna. Altre app che non dispongono di qualificatori di risorse -night hardcoded, come Facebook e Instagram, potrebbero o meno avere un bell'aspetto con il tema scuro di override di Android Q attivato. Instagram sembra a posto, mentre Facebook ha bisogno di molto lavoro. Dai miei test, l'opzione sviluppatore di override della modalità notturna è molto diversa dall'inversione dei colori nelle Impostazioni di accessibilità, forse Google intende che questa funzionalità aiuti gli sviluppatori a creare modalità scure per le loro app mentre lo sono le anteprime per sviluppatori di Android Q in corso. Tuttavia, non sapremo esattamente come funziona questa funzionalità finché non verrà rilasciato il codice sorgente di Android Q o Google non pubblicherà la relativa documentazione.

L'override della modalità oscura in Android Q è più interrotta nelle app che utilizzano WebView.

Nel "Costo di un colore pixel" discorso presentato da Chris Banes e Alan Viverette di Google, il duo incoraggia gli sviluppatori a implementare temi oscuri:

  • Utilizzo dell'API DayNight in AppCompat. I widget disponibili rispondono automaticamente alle modifiche in modalità notturna oppure puoi aggiungere un interruttore anche nella tua app.
  • Applicazione dinamica di temi in sovrapposizione in fase di runtime chiamando getTheme().applyStyle(). Maggiori informazioni possono essere trovate in questo discorso precedente Qui.
  • Strutturare la tua app in modo che faccia affidamento sull'utilizzo di attributi del tema come colorForeground, colorControlNormal, colorAccent e così via.
  • Aggiunta di qualificazioni notturne per le tue risorse. I qualificatori -night dovrebbero essere utilizzati per le risorse che hanno difficoltà a estrarre i colori del tema.
  • Abilitare la modalità colori invertiti (Impostazioni --> Colori --> Inversione colori) per avere una rapida idea di come apparirà la tua app in modalità oscura. Se vuoi fare uno screenshot della tua app con colori invertiti, tieni presente che il file l'inversione dei colori non verrà visualizzata nello screenshot.

Al momento del rilascio, la modalità oscura di Android Q si estenderà alle app Google di prima parte, ma speriamo che le app di terze parti adottino rapidamente temi scuri nelle loro app. Inoltre, speriamo di vedere più app passare automaticamente ai temi notturni quando l'utente abilita l'impostazione a livello di sistema. Al momento, l'unica app che ho visto che cambia automaticamente i temi quando è abilitata la modalità oscura a livello di sistema di Android Q è Contatti Google. Vedremo come andranno le cose tra un paio di mesi quando verrà rilasciato Android Q, ma a tutti gli sviluppatori che stanno leggendo questo: abbracciate il lato oscuro!

Con il contributo del collaboratore di LineageOS Joey Rizzoli.