Panoramica della UI scalabile

Utilizza l'UI scalabile per creare esperienze utente sofisticate, dinamiche e multi-pannello nelle auto. UI scalabile:

  • Fornisce un sistema di finestre flessibile.

  • Riduce al minimo i rischi, i costi e le complessità di ingegneria presentati dalla Compatibility Test Suite (CTS) per le implementazioni dell'interfaccia utente.

La UI scalabile supporta un'ampia gamma di design moderni per l'In-Vehicle Infotainment (IVI) che richiedono disposizioni dinamiche delle finestre, ma può anche essere ridimensionata per supportare esperienze tradizionali con disposizioni statiche delle finestre.

Android 17 introduce le seguenti funzionalità specifiche per la gestione avanzata delle finestre:

Esperienze di esempio

L'interfaccia utente scalabile consente un'infinita varietà di configurazioni delle finestre. Ecco alcuni scenari di esempio creati per esercitare la UI scalabile:

Sfondo della mappa con app mobili

Una configurazione dello sfondo della mappa con altre applicazioni che fluttuano in primo piano.

Background app

Una configurazione dello sfondo dell'applicazione con pannelli mobili.

App bloccata in Altre app

Un'applicazione bloccata, ad esempio un contenitore di widget, con altre applicazioni che vengono avviate in primo piano.

Riquadro mobile condizionale

Un pannello mobile condizionale che viene visualizzato solo quando vengono soddisfatte condizioni specifiche, ad esempio quando vengono riprodotti contenuti multimediali o quando viene attivato un avviso.

App bloccata vicino al conducente

Un'applicazione bloccata posizionata più vicino al conducente.

Layout dello schermo diviso

Un layout a schermo diviso che mostra due applicazioni affiancate.

Schermo diviso interattivo

Un layout interattivo a schermo diviso che consente il ridimensionamento dinamico.

Layout multiancora per schermi grandi

Un layout multiancora progettato per schermi di grandi dimensioni.

Un layout della schermata Home con un carosello di applicazioni.

Vantaggi e conformità

I vantaggi dell'interfaccia utente scalabile includono:

  • Rischio di test inferiore: il framework è pre-certificato e conforme al CTS, il che elimina il rischio principale di errori di test alla fine di un ciclo di programma. L'interfaccia utente scalabile può farti risparmiare mesi di lavoro di ingegneria e accelerare la conformità.

  • Maggiore flessibilità di progettazione: capacità comprovata di ricreare numerosi modelli di finestre per auto complessi esistenti. L'interfaccia utente scalabile supporta design ambiziosi e altamente differenziati.

  • Minore complessità di implementazione: l'astrazione in un modello XML di alto livello basato sulla configurazione riduce la barriera all'ingresso per la logica di finestre personalizzata.

  • Prestazioni migliori: l'interfaccia utente scalabile viene eseguita su una base di finestre ad alte prestazioni, completamente integrata con Android standard. Le transizioni scorrono senza problemi, consentendo l'ottimizzazione diretta.

Principi fondamentali

L'UI scalabile riduce al minimo la necessità di codice specifico per l'OEM, semplifica l'aggiornabilità e riduce i rischi di lancio eliminando le insidie e riducendo i problemi di certificazione.

L'approccio basato su XML risolve le sfide comuni nella gestione di sistemi di finestre complessi in AAOS, come posizionamento preciso, conflitti di ordine Z e messa a fuoco delle app.

Scalable UI fornisce questi componenti di base.

Riquadro

Un pannello è il contenitore rettangolare fondamentale sullo schermo. Ogni pannello corrisponde a un'attività radice dedicata per la gestione indipendente. Un pannello può ospitare attività delle app (TaskPanel) o contenuti basati sulla visualizzazione, come i widget (DecorPanel). Per saperne di più, consulta Configurare un pannello.

Variante

Una variante definisce uno stato visivo specifico per un pannello e include proprietà come bounds (posizione e dimensioni), visibility, layer (ordine Z) e raggio corner. Un singolo pannello può avere varianti, ad esempio opened, closed o minimized. Per scoprire di più, consulta Utilizzare una variante per progettare uno stato visivo.

Transizione

Una transizione definisce il modo in cui un pannello passa dallo stato attuale fromVariant a un nuovo stato, toVariant. Un Event attiva la transizione, che definisce l'animazione utilizzata dal pannello durante il cambio di stato. Un pannello deve passare dal suo stato attuale a toVariant. Per la sincronizzazione, il Window Manager principale anima e coordina tutte le transizioni.

  • Evento:un trigger per avviare una modifica dell'interfaccia utente. Un OEM o il sistema può predefinire un trigger. Ad esempio, _System_OnHomeEvent, _System_TaskOpenEvent o la pressione di un pulsante di navigazione personalizzato.

Ad esempio, Scalable UI utilizza gli eventi per attivare le transizioni. Queste transizioni animano un pannello da una variante all'altra per mostrare le modifiche dinamiche nell'interfaccia utente. L'interfaccia utente scalabile comunica queste modifiche ad altre app di sistema per modificare i contenuti in base alle esigenze. Definendo le relazioni dell'interfaccia utente in XML, puoi:

  • Specifica comportamenti complessi dell'interfaccia utente:definisci interazioni complesse dell'interfaccia utente.

  • Organizza i sistemi di finestre:controlla il posizionamento e la stratificazione delle finestre.

  • Implementa temi visivi:applica un branding e un'estetica coerenti.

  • Riduzione della complessità del codice:riduci al minimo la necessità di sviluppare codice personalizzato esteso.

Per saperne di più, consulta Configurare una transizione.

Pulsanti dell'UI di sistema

Oltre ad attivare intent, CarSystemBarButtons può attivare un evento dell'interfaccia utente scalabile quando viene toccato utilizzando gli attributi event, selectedEvent e unselectedEvent.

event descrive l'evento da attivare quando viene toccato il pulsante. Se è necessario un controllo più granulare di un evento, utilizza gli attributi selectedEvent e unselectedEvent per specificare l'evento da attivare quando il pulsante è selezionato o deselezionato, rispettivamente.

Quando implementare l'UI di sistema

Questa sezione descrive gli utilizzi ottimali dell'interfaccia utente scalabile.

Creare layout multipannello persistenti

Crea un'esperienza multizona in cui diverse aree dello schermo sono dedicate in modo permanente a funzioni specifiche. Ad esempio, controlli multimediali dedicati, una striscia del clima o una mappa a schermo intero.

Utilizza TaskPanels per le app principali (ad esempio la navigazione) e DecorPanels per gli elementi dell'interfaccia utente, sotto forma di visualizzazioni, che devono essere posizionati tra TaskPanels.

Implementare una scena della casa dinamica

Implementa una scena Home composta da più riquadri delle app visibili contemporaneamente e interattivi. Ad esempio, la mappa, il media player e la griglia delle app.

Per eseguire la transizione di tutti i pannelli pertinenti alle varianti della casa opened o default, configura _System_HomeEvent.

Applicare overlay contestuali

Posiziona elementi UI non app, come widget contestuali, branding personalizzato e barre di trascinamento che possono essere animate in coordinamento con le attività dell'app.

Utilizza DecorPanels per tutti gli elementi puramente decorativi o di hosting dei widget. Se un widget ospita un'app completamente funzionante e avviabile, un Panel > TaskPanel è ottimale. Utilizza DecorPanels per gli elementi UI basati sulla visualizzazione quando la stratificazione deve essere sincronizzata con la stratificazione TaskPanel.

Progettare interazioni complesse con i pannelli

Progetta azioni avanzate basate sull'utente, ad esempio il ridimensionamento dinamico di un pannello dell'app o la regolazione delle visualizzazioni del quadro strumenti in base ai contenuti del display principale.

Definisci Events personalizzati per attivare Transitions specifici non standard di sistema.

Estendere i layout IVI a un Unified Digital Cockpit

L'interfaccia utente scalabile gestisce le finestre multi-pannello (TaskPanel e DecorPanel) sul display principale dell'infotainment (display0) nella VM SDV IVI. Puoi accoppiare l'UI scalabile con la sicurezza del display per aggiornare le visualizzazioni del quadro strumenti quando cambia il layout del display principale:

  • Azioni dell'UI scalabile (VM SDV IVI): quando lo stato di un riquadro cambia sul display principale, l'UI scalabile può inviare un intent utilizzando un <Action> in xml/scalable_ui_actions.xml per comunicare ai componenti del cluster le modifiche al layout o alla modalità. Per saperne di più, consulta Configurare un'azione.
  • DriverUI (VM SDV IVI): viene eseguita sul display del cluster (display1) come app di sistema avviata da ClusterHomeManager e creata con automotive-design-compose. DriverUI esegue il rendering dei contenuti del cluster non di sicurezza (come mappe, contenuti multimediali e chiamate) e gestisce gli aggiornamenti di stato dal sistema IVI.
  • SDV Gateway su IVI (VM SDV IVI): DriverUI utilizza SDV Gateway Client per connettersi al renderer ad alta affidabilità (HAR) tramite gRPC (driverui.proto). DriverUI invia aggiornamenti dello stato del cluster (come varianti di layout, token del tema e modifiche delle impostazioni internazionali) insieme a messaggi heartbeat periodici.
  • HAR e Safety Monitor (VM SDV Media): vengono eseguiti in una VM SDV Media separata per il rendering di elementi critici per la sicurezza (come velocità, marcia, spie, segnali acustici e feed della telecamera posteriore). Mentre riceve heartbeat da DriverUI, HAR mantiene trasparenti le regioni del cluster Android in modo che i contenuti di DriverUI si mescolino con le sovrapposizioni di sicurezza di HAR. Se SDV IVI è in fase di avvio o non è disponibile, HAR mostra segnaposto di riserva.
  • Configurazione OEM:per configurare questo flusso, configura i trigger <Event> e gli intent <Action> in xml/scalable_ui_actions.xml su SDV IVI, aggiorna il file di progettazione Figma e i mapping dei segnali Config.json per la toolchain di progettazione della sicurezza e implementa il livello di astrazione della piattaforma (PAL) HAR per l'hardware di destinazione.