Configurare un pannello

Un riquadro descrive le proprietà dell'area che occupa e funge da contenitore dell'app. Utilizzi le configurazioni XML per definire i riquadri, che forniscono un approccio flessibile e senza codice per personalizzare le UI. Per gestire le istanze e gli stati, il sistema tiene traccia dei riquadri definiti.

Elenco dei riquadri

L'UI di sistema carica le definizioni dei relativi riquadri da una risorsa array denominata window_states. Questo array di risorse rimanda ai file XML in cui sono definite le singole configurazioni dei riquadri. Questo approccio centralizzato significa che i riquadri gestiti dall'UI scalabile vengono caricati come previsto e sono pronti per essere utilizzati dal sistema.

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <array name="window_states">
       <item>@xml/app_panel</item>
       <item>@xml/back_panel</item>
       ...
   </array>
</resources>

Definizione del riquadro

Ogni riquadro nel framework dell'UI scalabile è definito con un tag XML denominato <TaskPanel> o <DecorPanel>. <TaskPanel> descrive le proprietà di un contenitore dell'app, mentre <DecorPanel> descrive le proprietà di un contenitore della visualizzazione. L'UI di sistema carica queste definizioni dei riquadri e li tiene traccia fino al caricamento di un'altra configurazione, ad esempio a causa di una modifica della configurazione dovuta alla rotazione o a una richiesta di sistema esplicita. I tag <TaskPanel> e <DecorPanel> fungono da componenti fondamentali per creare un'esperienza personalizzata tramite componenti UI configurabili.

Attributi XML

Il tag <TaskPanel> può contenere questi attributi che puoi utilizzare per definire stati e transizioni.

Attributo Stato Descrizione
id Obbligatorio Specifica un identificatore univoco per il riquadro. Questo attributo viene utilizzato per recuperare il riquadro da PanelPool e per gestirne lo stato all'interno del sistema.
role Obbligatorio Definisce lo scopo o la funzione del riquadro nel sistema. Il valore può fare riferimento a una risorsa stringa, a un array di stringhe di nomi di componenti o a un ID layout. Ad esempio, può definire attività persistenti che devono sempre essere visualizzate nel riquadro o un layout da espandere.
defaultVariant Facoltativo Specifica l'ID della variante che il riquadro deve adottare inizialmente al momento del caricamento. Se non specificato, il sistema può utilizzare la prima variante definita variante come predefinita.
displayId Facoltativo Specifica l'ID del display in cui deve essere visualizzato il riquadro.
defaultLayer Facoltativo Può specificare un ordine Z predefinito per le varianti del riquadro se le varianti non definiscono esplicitamente un livello.
controller Facoltativo,
soggetto a modifiche

Fa riferimento a una risorsa (in genere un ID XML) che definisce un controller specifico del riquadro, che consente di memorizzare e passare i valori di configurazione ai controller dei riquadri personalizzati.

Questi controller devono implementare l' com.android.car.scalableui.panel.TaskPanelController interfaccia. Un caso d'uso comune di questi controller è la definizione di allocazioni di attività runtime flessibili nel riquadro.

Elementi secondari XML

I tag <TaskPanel> e <DecorPanel> possono includere questi elementi secondari per definire le caratteristiche e i comportamenti predefiniti.

Attributo Descrizione
<Variant>

Il tag nidificato descrive una configurazione visiva specifica per il riquadro in un determinato momento. Un riquadro può avere più varianti, ognuna identificata da un ID univoco.

Ogni variante definisce proprietà come limiti, visibilità, livello, alfa, raggio dell'angolo e inserti per quella particolare configurazione. Le varianti possono anche ereditare le proprietà da una variante principale.

<KeyFrameVariant> L'estensione di <Variant> consente l'interpolazione delle proprietà visive tra varianti diverse in base a un valore di frazione continuo (da 0 a 1) e viene utilizzata per transizioni fluide e dinamiche, ad esempio durante un'operazione di trascinamento, quando lo stato del riquadro dipende da un input continuo come un importo di trascinamento.
<Transitions>

Il tag nidificato contiene una raccolta di <Transition> definizioni, che descrivono come l'UI deve animare tra varianti diverse.

Ogni <Transition> definisce le varianti da e a, l'evento che la attiva e può facoltativamente specificare un animatore personalizzato da utilizzare per l'animazione, nonché una durata e un interpolatore.

Il tag <TaskPanel> può anche includere questi elementi secondari speciali per definire comportamenti specifici per le attività.

Attributo Descrizione
<Restart> Tag nidificato per descrivere una policy di riavvio da applicare quando un TaskPanel diventa vuoto. Questo tag supporta gli attributi policy, che può essere impostato su DEFAULT o LAST, e maxRetry, che specifica il numero di tentativi di riavvio prima del timeout.
<TaskBehavior> Tag nidificato per descrivere il comportamento dei lanci di attività in questo riquadro. Questo tag supporta l'attributo newTaskLaunchPolicy, che configura il comportamento dei nuovi lanci di attività da questo TaskPanel. I valori di configurazione validi per questa policy sono DEFAULT, REMAIN_IN_SOURCE, o REPARENT_TO_SOURCE.

Codice campione

<TaskPanel id="@+id/panelId"
           role="@array/roleValue"
           defaultVariant="@id/closed"
           displayId="0" >

 <Variant id="@+id/base">
        <Bounds left="0" top="0" width="100%" height="100%"/>
 </Variant>

<Variant id="@+id/opened" parent="@id/base">
    <Visibility isVisible="true"/>
</Variant>
<Variant id="@+id/closed"  parent="@id/base">
    <Visibility isVisible="false"/>
</Variant>

<Transitions>
    <Transition fromVariant="@id/closed"
                toVariant="@id/opened"
                onEvent="open_event"/>
        <Event id="_System_TaskOpenEvent" panelId="@id/panelId" />
    </Transition>
</Transitions>
</TaskPanel>