Una variante definisce uno stato visivo specifico per un riquadro, consentendo a un singolo riquadro di avere più rappresentazioni visive distinte, ad esempio uno stato aperto o chiuso. Utilizza XML per configurare la variante. Utilizza
un tag secondario all'interno di un <Panel> elemento.
Ogni tag <Variant> ha un attributo id obbligatorio per identificarlo in modo univoco.
Il tag può anche fare riferimento a una variante principale per ereditare le proprietà. Questo meccanismo di ereditarietà consente di definire in modo efficiente le proprietà comuni in più varianti.
Attributi XML
Per definire stati e transizioni, utilizza questi attributi con il <TaskPanel> o
<DecorPanel> tag.
| Attributo | Stato | Descrizione |
|---|---|---|
id |
Obbligatorio | Identificatore univoco della variante. Questo ID viene utilizzato per fare riferimento alla
variante nelle transizioni o come defaultVariant per un riquadro.
|
parent |
Facoltativo | Specifica l'ID di un'altra variante da cui la variante corrente deve ereditare le proprietà. Se una proprietà non è definita esplicitamente nella variante corrente, viene utilizzato il valore definito nella variante principale. |
Elementi secondari XML
Utilizza questi elementi facoltativi per specificare le caratteristiche visive del riquadro quando si trova nello stato di questa variante.
| Elemento secondario | Descrizione |
|---|---|
<Visibility> |
Specifica se il riquadro è visibile o nascosto e contiene un
isVisible attributo (booleano). |
<Alpha> |
Specifica il livello di trasparenza del riquadro; contiene un
alpha attributo (float, da 0,0 a 1,0). |
<Layer> |
Imposta l'ordine Z del riquadro rispetto ad altri riquadri; contiene un
layer attributo (integer). I valori più alti vengono disegnati in primo piano. |
<Focus> |
Specifica se il riquadro può acquisire lo stato attivo durante una transizione; contiene
un attributo onTransition (booleano).
|
<Bounds> |
Definisce l'area rettangolare (posizione e dimensioni) del riquadro sullo schermo. Questa area è controllata da attributi come left, top, bottom, width e height.
Quando utilizzi le percentuali, puoi utilizzare gli attributi di offset per applicare aggiustamenti fissi ai limiti basati sulla percentuale: Ad esempio, per indicare che un riquadro occupa il 100% dell'altezza dello schermo
escludendo una barra di navigazione ad altezza fissa nella parte inferiore, imposta
l'altezza al 100% e |
<SafeBounds> |
Specifica un'area sicura all'interno dei limiti del riquadro che non viene sovrapposta
da ritagli o inserti del display, per sottolineare la compatibilità delle app disegnate
al suo interno. I suoi attributi sono simili a <Bounds>.
|
<Corner> |
Definisce il raggio degli angoli del riquadro, consentendo di arrotondarli e contiene un attributo radius (integer). Un angolo acuto è il valore predefinito e non deve essere definito. |
<Insets> |
Specifica gli inserti (spaziatura interna) per il riquadro. Contiene gli attributi left, top, right e bottom. Questi inserti vengono segnalati alle app avviate all'interno del riquadro.
|
<Background> |
Introduce un riquadro di decorazione dello sfondo facoltativo per evitare effetti di trasparenza quando si passa da un'app all'altra. Definisce proprietà come colore e alfa per questo livello di decorazione. Le proprietà del livello di decorazione, come limiti e livello, vengono impostate per impostazione predefinita sulle proprietà della variante se non sono già impostate. |
Codice campione
<Variant id="@id/opened">
<Visibility isVisible="true"/>
<Bounds left="0dp"
top="0dp"
right="100%"
bottom="100%"
bottomOffset="100dp"/>
<Alpha value="1.0"/>
<Layer value="10"/>
<Focus onTransition="true"/>
<Corner radius="24dp"/>
<Insets left="16dp" top="0dp" right="16dp" bottom="48dp"/>
<Background color="@color/app_background" alpha="0.9"/>
</Variant>
Interpolare le proprietà visive
Utilizza KeyFrameVariant per interpolare le proprietà visive. Questa estensione specializzata di variant si basa su un valore frazionario continuo (da 0 a 1) che consente transizioni fluide e dinamiche basate su input continui, ad esempio un'operazione di trascinamento quando lo stato del riquadro cambia dinamicamente in base alla quantità di trascinamento.
Attributi XML
KeyFrameVariant non ha attributi. Il tag <KeyFrameVariant> contiene
le informazioni necessarie per definire un KeyFrameVariant.
Elementi secondari XML
KeyFrameVariant contiene uno o più tag secondari <KeyFrame>. Ogni
<KeyFrame> ha un framePosition attributo (da 0 a 100) e fa riferimento a un variant
attributo (l'ID di un'altra variante). Questi keyframes definiscono lo stato del riquadro in punti specifici di una transizione continua.
Codice campione
<KeyFrameVariant id="@id/panel_resizing">
<KeyFrame framePosition="0" variant="@id/minimized"/>
<KeyFrame framePosition="75" variant="@id/opened"/>
<KeyFrame framePosition="100" variant="@id/expanded"/>
</KeyFrameVariant>