Панель описывает свойства занимаемой ею области и служит контейнером приложения. Для определения панелей используются XML-конфигурации, что обеспечивает гибкий подход к настройке пользовательских интерфейсов без написания кода. Для управления экземплярами и состояниями система отслеживает определённые панели.
Список панелей
Системный пользовательский интерфейс загружает определения своих панелей из массива ресурсов с именем window_states
. Этот массив ресурсов указывает на XML-файлы, в которых определены конфигурации отдельных панелей. Такой централизованный подход означает, что панели, управляемые масштабируемым пользовательским интерфейсом, загружаются по назначению и готовы к использованию системой.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="window_states">
<item>@xml/app_panel</item>
<item>@xml/back_panel</item>
...
</array>
</resources>
Определение панели
Каждая панель в фреймворке Scalable UI определяется XML-тегом <TaskPanel>
, который описывает свойства контейнера приложения. Системный пользовательский интерфейс загружает эти определения панелей и отслеживает их состояние до загрузки другой конфигурации.
Например, изменение конфигурации из-за поворота или явного системного запроса. <TaskPanel>
служит базовым компонентом для создания персонализированного пользовательского интерфейса с помощью настраиваемых компонентов.
XML-атрибуты
Тег <TaskPanel>
может содержать эти атрибуты, которые можно использовать для определения состояний и переходов.
Атрибут | Статус | Описание |
---|---|---|
id | Обязательный | Задаёт уникальный идентификатор панели. Этот атрибут используется для извлечения панели из PanelPool и управления её состоянием в системе. |
role | Обязательный | Определяет назначение или функцию панели в системе. Значение может ссылаться на строковый ресурс, строковый массив имён компонентов или идентификатор макета. Например, оно может определять постоянные действия, которые всегда должны отображаться на панели, или макет, который необходимо расширить. |
defaultVariant | Необязательный | Указывает идентификатор варианта, который панель должна изначально использовать при загрузке. Если не указан, система может использовать первый заданный вариант по умолчанию. |
displayId | Необязательный | Указывает идентификатор дисплея, на котором должна отображаться панель. |
defaultLayer | Необязательный | Можно указать Z-порядок по умолчанию для вариантов панели, если варианты явно не определяют слой. |
controller | Необязательный, могут быть изменены | Ссылается на ресурс (обычно идентификатор XML), который определяет контроллер, специфичный для панели, что позволяет хранить и передавать значения конфигурации настраиваемым контроллерам панели. Эти контроллеры должны реализовывать интерфейс |
Дочерние элементы XML
Тег <TaskPanel>
может включать эти атрибуты для определения характеристик и поведения по умолчанию,
Атрибут | Описание |
---|---|
<Variant> | Вложенный тег описывает конкретную визуальную конфигурацию панели в любой момент времени. Панель может иметь несколько вариантов, каждый из которых идентифицируется уникальным идентификатором. Каждый вариант определяет такие свойства, как границы, видимость, слой, альфа-канал, радиус угла и вставки для данной конкретной конфигурации. Варианты также могут наследовать свойства родительского варианта. |
<KeyFrameVariant> | Расширение <Variant> позволяет интерполировать визуальные свойства между различными вариантами на основе значения непрерывной дроби (от 0 до 1) и используется для плавных и динамических переходов, например во время операции перетаскивания, когда состояние панели зависит от непрерывного ввода, например величины перетаскивания. |
<Transitions> | Вложенный тег содержит набор определений Каждый |
Пример кода
<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>