Eine Variante definiert einen bestimmten visuellen Zustand für einen Bereich. So kann ein einzelner Bereich mehrere unterschiedliche visuelle Darstellungen haben, z. B. einen geöffneten oder geschlossenen Zustand. Verwenden Sie XML, um eine Variante zu konfigurieren. Verwenden Sie
ein Unter-Tag innerhalb eines <Panel> Elements.
Jedes <Variant> Tag hat ein obligatorisches id Attribut, um es eindeutig zu identifizieren.
Das Tag kann auch auf eine übergeordnete Variante verweisen, um Attribute zu übernehmen. Dieser Mechanismus ermöglicht die effiziente Definition gemeinsamer Attribute für mehrere Varianten.
XML-Attribute
Verwenden Sie diese Attribute mit dem <TaskPanel> oder
<DecorPanel> Tag, um Zustände und Übergänge zu definieren.
| Attribut | Status | Beschreibung |
|---|---|---|
id |
Erforderlich | Eindeutige ID der Variante. Diese ID wird verwendet, um in Übergängen auf die
Variante zu verweisen oder sie als defaultVariant für einen Bereich festzulegen.
|
parent |
Optional | Gibt die ID einer anderen Variante an, von der die aktuelle Variante Attribute übernehmen soll. Wenn ein Attribut in der aktuellen Variante nicht explizit definiert ist, wird der Wert der übergeordneten Variante verwendet. |
Untergeordnete XML-Elemente
Verwenden Sie diese optionalen Elemente, um die visuellen Merkmale des Bereichs anzugeben, wenn er sich im Zustand dieser Variante befindet.
| Untergeordnetes Element | Beschreibung |
|---|---|
<Visibility> |
Gibt an, ob der Bereich sichtbar oder ausgeblendet ist, und enthält ein
isVisible Attribut (boolesch). |
<Alpha> |
Gibt den Transparenzgrad des Bereichs an und enthält ein
alpha Attribut (Gleitkommazahl, 0,0 bis 1,0). |
<Layer> |
Legt die Z-Reihenfolge des Bereichs im Verhältnis zu anderen Bereichen fest und enthält ein
layer Attribut (Ganzzahl). Höhere Werte werden oben gezeichnet. |
<Focus> |
Gibt an, ob der Bereich während eines Übergangs den Fokus erhalten kann, und enthält
ein onTransition Attribut (boolesch).
|
<Bounds> |
Definiert den rechteckigen Bereich (Position und Größe) des Bereichs auf dem Bildschirm. Dieser Bereich wird durch Attribute wie „left“, „top“, „bottom“, „width“ und „height“ gesteuert.
Wenn Sie Prozentwerte verwenden, können Sie Offset-Attribute verwenden, um feste
Anpassungen an den prozentualen Grenzen vorzunehmen:
Wenn ein Bereich beispielsweise 100% der Bildschirmhöhe einnehmen soll, aber eine Navigationsleiste mit fester Höhe unten ausgeschlossen werden soll, legen Sie die Höhe auf 100% und die |
<SafeBounds> |
Gibt einen sicheren Bereich innerhalb der Grenzen des Bereichs an, der nicht von Displayausschnitten oder -einsätzen überlappt wird, um die Kompatibilität für Apps zu unterstreichen, die darin gezeichnet werden. Die Attribute sind ähnlich wie bei <Bounds>.
|
<Corner> |
Definiert den Radius für die Ecken des Bereichs, sodass abgerundete Ecken möglich sind, und enthält ein Radiusattribut (Ganzzahl). Eine scharfe Ecke ist die Standardeinstellung und muss nicht definiert werden. |
<Insets> |
Gibt die Einsätze (Abstand) für den Bereich an. Es enthält die Attribute „left“, „top“, „right“ und „bottom“. Diese Einsätze werden an die Apps gemeldet, die im Bereich gestartet werden.
|
<Background> |
Führt einen optionalen Hintergrunddekorbereich ein, um Durchsicht effekte beim Wechseln von Apps zu vermeiden. Es definiert Attribute wie Farbe und Alpha für diese Dekorebene. Die Attribute der Dekorebene, z. B. Grenzen und Ebene, werden standardmäßig auf die Attribute der Variante festgelegt, wenn sie noch nicht festgelegt wurden. |
Beispielcode
<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>
Visuelle Attribute interpolieren
Verwenden Sie KeyFrameVariant, um visuelle Attribute zu interpolieren. Diese spezielle Erweiterung von variant basiert auf einem kontinuierlichen Bruchteilswert (0 bis 1), der reibungslose, dynamische Übergänge ermöglicht, die durch kontinuierliche Eingaben gesteuert werden, z. B. eine Ziehbewegung, wenn sich der Zustand des Bereichs dynamisch mit der Ziehbewegung ändert.
XML-Attribute
KeyFrameVariant hat keine Attribute. Das Tag <KeyFrameVariant> enthält
die Informationen, die zum Definieren einer KeyFrameVariant erforderlich sind.
Untergeordnete XML-Elemente
KeyFrameVariant enthält ein oder mehrere untergeordnete <KeyFrame>-Tags. Jedes
<KeyFrame> hat ein framePosition Attribut (0–100) und verweist auf ein Varianten
Attribut (die ID einer anderen Variante). Diese keyframes definieren den Zustand des Bereichs an bestimmten Punkten in einem kontinuierlichen Übergang.
Beispielcode
<KeyFrameVariant id="@id/panel_resizing">
<KeyFrame framePosition="0" variant="@id/minimized"/>
<KeyFrame framePosition="75" variant="@id/opened"/>
<KeyFrame framePosition="100" variant="@id/expanded"/>
</KeyFrameVariant>