Personalizzazione a doppio riquadro

Android 12 introduce un design doppio riquadro, con un menu L0 statico a sinistra e un riquadro dei contenuti a destra. Questa funzionalità introduce molte nuove opzioni di personalizzazione. In questa pagina vengono descritte queste funzionalità e spiegato come personalizzare le tue preferenze.

Ripristina riquadro singolo

Per impostazione predefinita, ora Impostazioni auto mostra la visualizzazione a due riquadri quando la larghezza della finestra dell'app è maggiore o uguale a 1400 dp e la visualizzazione a riquadro singolo in caso contrario. Per personalizzare questa operazione per un dispositivo specifico, utilizza un overlay di risorse di runtime (RRO) che abbia come target i valori di configurazione necessari:

Valore Descrizione
config_global_force_single_pane Imposta su true se l'intera app deve essere eseguita in configurazione con riquadro singolo.
config_homepage_fragment_class Specifica il frammento iniziale per la home page. In modalità a due riquadri, viene utilizzato per il frammento iniziale nel riquadro dei contenuti. In una visualizzazione a riquadro singolo, dovrebbe essere il frammento della home page.

Chiavi intestazione

Poiché attività CarSettings diverse possono avere un'IA personalizzata, viene fornita una mappatura delle chiavi dell'intestazione per semplificare le personalizzazioni. In AndroidManifest.xml, ogni attività che supporta il riquadro doppio ha un TOP_LEVEL_HEADER_KEY specificato nei metadati. Questo valore fa riferimento a una chiave specificata in res/values/header_keys.xml, che viene mappata alla chiave delle preferenze dell'elemento del menu di primo livello a cui appartiene il frammento iniziale. Pertanto, se il frammento iniziale di un'attività viene modificato o l'IA viene riorganizzata in modo che un determinato frammento rientri in una preferenza di primo livello diversa, le mappature pertinenti nel file header_keys.xml possono essere aggiornate per specificare il valore corretto.

Personalizzare il layout delle attività

Il layout per BaseCarSettingsActivity si trova in res/layout/car_setting_activity e in queste sezioni:

Valore Descrizione
top_level_menu Frammento di menu di primo livello mostrato nelle configurazioni con riquadri doppi. La larghezza di questa sezione è specificata da top_level_menu_width. Un layout di base del telaio (con barra degli strumenti) è inserito in questa visualizzazione.
top_level_divider Linea verticale che divide i due riquadri e la cui larghezza puoi personalizzare con top_level_divider_width.
fragment_container_wrapper Layout wrapper per il riquadro dei contenuti (o il riquadro principale nella configurazione a riquadro singolo). Questa visualizzazione è racchiusa in un layout di base del telaio (con barra degli strumenti).
settings_focus_parking_view Implementazione personalizzata di FocusParkingView per mantenere attivo il controllo rotativo quando necessario.
fragment_container Contenitore dei contenuti principali. I frammenti di contenuti lo utilizzano come layout di destinazione.
restricted_message Visualizzazione di blocco con limitazioni UX da mostrare nelle istanze di BaseFragment.

Figura 1. Layout a doppio riquadro

Preferenze di primo livello

Le preferenze di primo livello sono CarUiPreferences personalizzate con un layout leggermente modificato per cambiare l'altezza della preferenza e la forma dello sfondo. Esistono molti modi diversi per personalizzare l'aspetto di queste preferenze:

Valore Descrizione
res/layout/top_level_preference.xml Sostituire l'intero layout delle preferenze.
top_level_preference_min_height Altezza minima della preferenza di primo livello. A seconda dei contenuti (ad esempio se è presente un sottotitolo), le preferenze potrebbero essere più alte di questo valore.
top_level_preference_corner_radius Raggio della smussatura degli angoli.
top_level_preference_background Sfondo delle preferenze di primo livello quando non sono attualmente evidenziate.
top_level_preference_highlight Sfondo delle preferenze di primo livello quando sono evidenziate.

Icone di primo livello

La Figura 2 illustra come le icone di primo livello sono ora costituite da un'icona vettoriale all'interno di una forma di sfondo colorato. Questa forma è attualmente configurata per supportare una forma ovale e rettangolare. Per impostazione predefinita, la forma è impostata su ovale.

Per modificare il valore predefinito, modifica il valore in config_top_level_icon_shape (dove 0 è un rettangolo e 1 è un ovale). Le icone vengono create inserendo l'icona in primo piano contop_level_foreground_icon_inset dalla forma di sfondo. Ogni icona di primo livello ha un colore di primo piano specificato in res/values/colors.xml e un colore di sfondo specificato nella cartella res/color.

Per creare un aspetto personalizzato, puoi sostituire tutti i valori di colore.

Figura 2. Componenti delle preferenze di primo livello

Anche le icone per le preferenze iniettate che rientrano nelle categorie specificate da config_top_level_injection_categories vengono trattate come icone di primo livello. Le icone fornite sono inserite nello stesso valore e hanno la stessa forma specificata per tutte le altre icone di primo livello (vedi sopra). Tuttavia, lo sfondo viene determinato esaminando i seguenti attributi nell'ordine indicato:

  1. com.android.settings.bg.argb Metadati dell'app di inserimento.
  2. com.android.settings.bg.hint Metadati dell'app che esegue l'iniezione.
  3. top_level_injected_default_background specificato in res/values/colors.xml.

Per ignorare l'inserimento dei dati dell'app e utilizzare sempre lo sfondo predefinito, imposta config_top_level_injection_background_always_use_default su true.