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 |
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 Każdy element |
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>