Konfigurowanie panelu

Panel opisuje właściwości obszaru, który zajmuje, i działa jako kontener aplikacji. Konfiguracje XML służą do definiowania paneli, które zapewniają elastyczne i bezkodowe podejście do dostosowywania interfejsów. Aby zarządzać instancjami i stanami, system śledzi zdefiniowane panele.

Lista paneli

Interfejs systemu wczytuje definicje paneli z zasobu tablicy o nazwie window_states. Ta tablica zasobów wskazuje pliki XML, w których zdefiniowane są poszczególne konfiguracje paneli. Dzięki temu scentralizowanemu podejściu panele zarządzane przez skalowalny interfejs użytkownika są wczytywane zgodnie z przeznaczeniem i gotowe do użycia przez system.

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

Definicja panelu

Każdy panel w ramach skalowalnego interfejsu jest zdefiniowany za pomocą tagu XML o nazwie <TaskPanel> lub <DecorPanel>. <TaskPanel> opisuje właściwości kontenera aplikacji, a <DecorPanel> – właściwości kontenera widoku. Interfejs systemu wczytuje te definicje paneli i śledzi je do momentu wczytania innej konfiguracji. Na przykład w wyniku zmiany konfiguracji spowodowanej obróceniem urządzenia lub wyraźną prośbą systemu. <TaskPanel><DecorPanel> to podstawowe komponenty, które umożliwiają tworzenie dostosowanych środowisk za pomocą konfigurowalnych komponentów interfejsu.

Atrybuty XML

Tag <TaskPanel> może zawierać te atrybuty, których możesz używać do definiowania stanów i przejść.

Atrybut Stan Opis
id Obowiązkowe Określa unikalny identyfikator panelu. Ten atrybut służy do pobierania panelu z PanelPool i zarządzania jego stanem w systemie.
role Obowiązkowe Określa przeznaczenie lub funkcję panelu w systemie. Wartość może odnosić się do zasobu tekstowego, tablicy tekstowej z nazwami komponentów lub identyfikatora układu. Może na przykład definiować trwałe aktywności, które powinny być zawsze wyświetlane na panelu, lub układ do rozwinięcia.
defaultVariant Opcjonalnie Określa identyfikator wariantu, który panel powinien początkowo przyjąć po wczytaniu. Jeśli nie zostanie określona, system może użyć pierwszej zdefiniowanej wersji jako domyślnej.
displayId Opcjonalnie Określa identyfikator wyświetlacza, na którym ma się pojawić panel.
defaultLayer Opcjonalnie Może określać domyślną kolejność Z wariantów panelu, jeśli warianty nie definiują jednoznacznie warstwy.
controller Opcjonalne,
może ulec zmianie

Odwołuje się do zasobu (zwykle identyfikatora XML), który definiuje kontroler specyficzny dla panelu, co umożliwia przechowywanie i przekazywanie wartości konfiguracji do niestandardowych kontrolerów paneli.

Te kontrolery powinny implementować interfejs com.android.car.scalableui.panel.TaskPanelController. Typowym zastosowaniem tych kontrolerów jest definiowanie elastycznych przydziałów zadań w czasie działania na panelu.

Elementy podrzędne XML

Tagi <TaskPanel><DecorPanel> mogą zawierać te elementy podrzędne, aby określać cechy i domyślne zachowania.

Atrybut Opis
<Variant>

Tag zagnieżdżony opisuje konkretną konfigurację wizualną panelu w danym momencie. Panel może mieć wiele wariantów, z których każdy jest identyfikowany za pomocą unikalnego identyfikatora.

Każdy wariant określa właściwości takie jak granice, widoczność, warstwa, alfa, promień zaokrąglenia i wstawki dla danej konfiguracji. Wersje mogą też dziedziczyć właściwości po nadrzędnej wersji.

<KeyFrameVariant> Rozszerzenie <Variant> umożliwia interpolację właściwości wizualnych między różnymi wariantami na podstawie ciągłej wartości ułamka (od 0 do 1) i jest używane do płynnych i dynamicznych przejść, np. podczas operacji przeciągnięcia, gdy stan panelu zależy od ciągłego wejścia, takiego jak wielkość przeciągnięcia.
<Transitions>

Tag zagnieżdżony zawiera zbiór definicji <Transition>, które opisują, jak interfejs powinien animować przejścia między różnymi wariantami.

Każdy element <Transition> definiuje warianty from i to, zdarzenie, które go wywołuje, i może opcjonalnie określać niestandardowy animator do użycia w animacji, a także czas trwania i interpolator.

Tag <TaskPanel> może też zawierać te specjalne elementy podrzędne, aby określać zachowania związane z konkretnymi zadaniami.

Atrybut Opis
<Restart> Zagnieżdżony tag opisujący zasadę ponownego uruchamiania, która ma być stosowana, gdy element TaskPanel stanie się pusty. Ten tag obsługuje atrybuty policy, które można ustawić na DEFAULT lub LAST, oraz maxRetry, który określa, ile razy zostanie podjęta próba ponownego uruchomienia przed upływem limitu czasu.
<TaskBehavior> Zagnieżdżony tag opisujący zachowanie uruchamiania zadań w tym panelu. Ten tag obsługuje atrybut newTaskLaunchPolicy, który konfiguruje działanie nowych zadań uruchamianych z tego panelu zadań. Prawidłowe wartości konfiguracji tej zasady to DEFAULT, REMAIN_IN_SOURCE lub REPARENT_TO_SOURCE.

Przykładowy kod

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