Bereich konfigurieren

Ein Bereich beschreibt die Eigenschaften des Bereichs, den er einnimmt, und fungiert als App-Container. Mit XML-Konfigurationen definieren Sie Bereiche, die eine flexible und codefreie Möglichkeit zum Anpassen von Benutzeroberflächen bieten. Das System verfolgt definierte Bereiche, um Instanzen und Status zu verwalten.

Bereichsliste

Die System-UI lädt die Definitionen ihrer Bereiche aus einer Array-Ressource mit dem Namen window_states. Dieses Ressourcen-Array verweist auf die XML-Dateien, in denen die einzelnen Panelkonfigurationen definiert sind. Durch diesen zentralen Ansatz werden von Scalable UI verwaltete Bereiche wie vorgesehen geladen und können vom System verwendet werden.

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

Bereichsdefinition

Jedes Feld im Scalable UI-Framework wird mit einem XML-Tag namens <TaskPanel> definiert, das die Eigenschaften eines App-Containers beschreibt. Die System-UI lädt diese Paneldefinitionen und verfolgt die Panels, bis eine andere Konfiguration geladen wird.

Das kann beispielsweise durch eine Konfigurationsänderung aufgrund einer Drehung oder einer expliziten Systemanfrage geschehen. Die <TaskPanel> ist eine grundlegende Komponente, mit der Sie über konfigurierbare UI-Komponenten eine benutzerdefinierte Umgebung erstellen können.

XML-Attribute

Das <TaskPanel>-Tag kann die folgenden Attribute enthalten, mit denen Sie Status und Übergänge definieren können.

Attribut Status Beschreibung
id Obligatorisch Gibt eine eindeutige Kennung für den Bereich an. Mit diesem Attribut wird das Steuerfeld aus PanelPool abgerufen und sein Status im System verwaltet.
role Obligatorisch Definiert den Zweck oder die Funktion des Bereichs im System. Der Wert kann auf eine String-Ressource, ein String-Array mit Komponentennamen oder eine Layout-ID verweisen. Damit können beispielsweise persistente Aktivitäten definiert werden, die immer im Bereich angezeigt werden sollen, oder ein Layout, das aufgebläht werden soll.
defaultVariant Optional Gibt die ID der Variante an, die das Feld beim Laden anfangs übernehmen soll. Wenn keine Angabe erfolgt, kann das System die erste definierte Variante als Standard verwenden.
displayId Optional Gibt die ID des Displays an, auf dem das Feld angezeigt werden soll.
defaultLayer Optional Sie können eine Standard-Z-Reihenfolge für die Varianten des Bereichs angeben, wenn für die Varianten keine Ebene explizit definiert ist.
controller Optional,
Änderungen vorbehalten

Verweist auf eine Ressource (in der Regel eine XML-ID), die einen panelspezifischen Controller definiert, mit dem Konfigurationswerte gespeichert und an benutzerdefinierte Panel-Controller übergeben werden können.

Diese Controller sollten die com.android.car.scalableui.panel.TaskPanelController-Schnittstelle implementieren. Ein häufiger Anwendungsfall für diese Controller ist die Definition flexibler Zuweisungen von Laufzeitaufgaben im Panel.

Untergeordnete XML-Elemente

Das <TaskPanel>-Tag kann diese Attribute enthalten, um Merkmale und Standardverhalten zu definieren.

Attribut Beschreibung
<Variant>

Ein verschachteltes Tag beschreibt eine bestimmte visuelle Konfiguration für das Feld zu einem bestimmten Zeitpunkt. Ein Bereich kann mehrere Varianten haben, die jeweils durch eine eindeutige ID gekennzeichnet sind.

Jede Variante definiert Eigenschaften wie Grenzen, Sichtbarkeit, Ebene, Alpha, Eckenradius und Insets für die jeweilige Konfiguration. Varianten können auch Attribute von einer übergeordneten Variante übernehmen.

<KeyFrameVariant> Die Erweiterung von <Variant> ermöglicht die Interpolation visueller Eigenschaften zwischen verschiedenen Varianten basierend auf einem kontinuierlichen Bruchteilwert (0 bis 1). Sie wird für flüssige und dynamische Übergänge verwendet, z. B. während eines Ziehvorgangs, wenn der Status des Bereichs von einer kontinuierlichen Eingabe wie einem Ziehbetrag abhängt.
<Transitions>

Ein verschachteltes Tag enthält eine Sammlung von <Transition>-Definitionen, die beschreiben, wie die Benutzeroberfläche zwischen verschiedenen Varianten animiert werden soll.

Jede <Transition> definiert die Varianten from und to, das Ereignis, das sie auslöst, und kann optional einen benutzerdefinierten Animator für die Animation sowie eine Dauer und einen Interpolator angeben.

Beispielcode

<Panel 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>
</Panel>