Настроить панель

Панель описывает свойства занимаемой ею области и выступает в качестве контейнера приложения. Для определения панелей используются XML-конфигурации, что обеспечивает гибкий и не требующий написания кода подход к настройке пользовательского интерфейса. Для управления экземплярами и состояниями система отслеживает определенные панели.

Список панелей

Системный пользовательский интерфейс загружает определения своих панелей из массива ресурсов с именем window_states . Этот массив ресурсов указывает на XML-файлы, в которых определены конфигурации отдельных панелей. Такой централизованный подход означает, что панели, управляемые Scalable UI, загружаются должным образом и готовы к использованию системой.

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

Определение панели

Каждая панель в масштабируемой среде пользовательского интерфейса определяется с помощью XML-тега с именем <TaskPanel> или <DecorPanel> . <TaskPanel> описывает свойства контейнера приложения, а <DecorPanel> — свойства контейнера представления. Системный пользовательский интерфейс загружает эти определения панелей и отслеживает их до тех пор, пока не будет загружена другая конфигурация. Например, при изменении конфигурации из-за поворота экрана или явного системного запроса. <TaskPanel> и <DecorPanel> служат основополагающими компонентами для создания персонализированного интерфейса с помощью настраиваемых компонентов пользовательского интерфейса.

XML-атрибуты

Тег <TaskPanel> может содержать следующие атрибуты, которые можно использовать для определения состояний и переходов.

Атрибут Статус Описание
id Обязательный Указывает уникальный идентификатор для панели. Этот атрибут используется для получения панели из PanelPool и для управления ее состоянием в системе.
role Обязательный Определяет назначение или функцию панели в системе. Значение может представлять собой строковый ресурс, строковый массив имен компонентов или идентификатор макета. Например, оно может определять постоянные действия, которые всегда должны отображаться на панели, или макет, который необходимо загрузить.
defaultVariant Необязательный Указывает идентификатор варианта, который панель должна изначально использовать при загрузке. Если не указан, система может использовать первый определенный вариант в качестве варианта по умолчанию.
displayId Необязательный Указывает идентификатор дисплея, на котором должна отображаться эта панель.
defaultLayer Необязательный Можно задать порядок отображения по оси Z для вариантов панели, если варианты явно не определяют слой.
controller Необязательный,
может быть изменено

Ссылается на ресурс (обычно XML-идентификатор), определяющий контроллер, специфичный для панели, что позволяет хранить и передавать значения конфигурации пользовательским контроллерам панелей.

Эти контроллеры должны реализовывать интерфейс com.android.car.scalableui.panel.TaskPanelController . Распространенный вариант использования этих контроллеров — определение гибкого распределения задач во время выполнения на панели.

XML дочерние элементы

Теги <TaskPanel> и <DecorPanel> могут включать эти дочерние элементы для определения характеристик и поведения по умолчанию.

Атрибут Описание
<Variant>

Вложенный тег описывает конкретную визуальную конфигурацию панели в любой момент времени. Панель может иметь несколько вариантов, каждый из которых идентифицируется уникальным идентификатором.

Каждый вариант определяет такие свойства, как границы, видимость, слой, прозрачность, радиус скругления углов и отступы для данной конкретной конфигурации. Варианты также могут наследовать свойства от родительского варианта.

<KeyFrameVariant> Расширение <Variant> позволяет интерполировать визуальные свойства между различными вариантами на основе непрерывного дробного значения (от 0 до 1) и используется для плавных и динамичных переходов, например, во время операции перетаскивания, когда состояние панели зависит от непрерывного входного параметра, такого как величина перетаскивания.
<Transitions>

Вложенный тег содержит набор определений <Transition> , которые описывают, как пользовательский интерфейс должен анимироваться между различными вариантами.

Каждый параметр <Transition> определяет варианты " от" и "до" , событие, которое его запускает, и может дополнительно указывать пользовательский аниматор для анимации, а также длительность и интерполятор.

В тег <TaskPanel> также можно включать эти специальные дочерние элементы для определения поведения, специфичного для задач.

Атрибут Описание
<Restart> Вложенный тег для описания политики перезапуска, применяемой при опустошении панели задач. Этот тег поддерживает атрибуты policy , который может быть установлен в значение DEFAULT или LAST , и maxRetry , указывающий, сколько раз будет предпринята попытка перезапуска до истечения таймаута.
<TaskBehavior> Вложенный тег для описания поведения запуска задач на этой панели. Этот тег поддерживает атрибут newTaskLaunchPolicy , который настраивает поведение запуска новых задач из этой панели задач. Допустимые значения конфигурации для этой политики: DEFAULT , REMAIN_IN_SOURCE или REPARENT_TO_SOURCE .

Пример кода

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