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 nie wymagające pisania kodu 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 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>, który opisuje właściwości kontenera aplikacji. Interfejs systemu wczytuje te definicje paneli i śledzi je do momentu załadowania innej konfiguracji.

Może to być np. zmiana konfiguracji spowodowana rotacją lub wyraźną prośbą systemu. <TaskPanel> to podstawowy komponent, który umożliwia tworzenie niestandardowych rozwiązań 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 cel lub funkcję panelu w systemie. Wartość może odnosić się do zasobu ciągu tekstowego, tablicy ciągów tekstowych z nazwami komponentów lub identyfikatora układu. Może na przykład definiować trwałe działania, które powinny być zawsze wyświetlane na panelu, lub układ do rozwinięcia.
defaultVariant Opcjonalny 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 Opcjonalny Określa identyfikator wyświetlacza, na którym ma się pojawić panel.
defaultLayer Opcjonalny Może określać domyślną kolejność Z wariantów panelu, jeśli warianty nie definiują jednoznacznie warstwy.
controller Opcjonalnie,
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. Często używa się ich do definiowania elastycznych przydziałów zadań w czasie działania na panelu.

Elementy podrzędne XML

Tag <TaskPanel> może zawierać te atrybuty, 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, przezroczystość, promień zaokrąglenia i wstawki dla danej konfiguracji. Warianty mogą też dziedziczyć właściwości po nadrzędnym wariancie.

<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 przeciągania, gdy stan panelu zależy od ciągłego wejścia, takiego jak wartość 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 wersjami.

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.

Kod demonstracyjny

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