Вариант определяет конкретное визуальное состояние панели, позволяя одной панели иметь несколько различных визуальных представлений, например, открытое или закрытое состояние. Для настройки варианта используйте XML. Используйте подтег внутри элемента <Panel>
.
Каждый тег <Variant>
имеет обязательный атрибут id
для его уникальной идентификации. Тег также может ссылаться на родительский вариант для наследования свойств. Этот механизм наследования позволяет эффективно определять общие свойства для нескольких вариантов.
XML-атрибуты
Для определения состояний и переходов используйте эти атрибуты с тегом <TaskPanel>
или <DecorPanel>
.
Атрибут | Статус | Описание |
---|---|---|
id | Обязательный | Уникальный идентификатор варианта. Этот идентификатор используется для ссылки на вариант в переходах или в качестве defaultVariant для панели. |
parent | Необязательный | Указывает идентификатор другого варианта, свойства которого текущий вариант должен унаследовать. Если свойство явно не определено в текущем варианте, оно возвращается к значению, заданному в родительском варианте. |
Дочерние элементы XML
Используйте эти необязательные элементы для указания визуальных характеристик панели, когда она находится в состоянии этого варианта.
Дочерний элемент | Описание |
---|---|
<Visibility> | Указывает, видима или скрыта панель, и содержит атрибут isVisible (логическое значение). |
<Alpha> | Задает уровень прозрачности панели; содержит атрибут alpha (плавающее число от 0,0 до 1,0). |
<Layer> | Задаёт Z-порядок панели относительно других панелей; содержит атрибут layer (целое число). Более высокие значения отображаются поверх остальных. |
<Focus> | Указывает, может ли панель получать фокус во время перехода; содержит атрибут onTransition (логическое значение). |
<Bounds> | Определяет прямоугольную область (положение и размер) панели на экране. Эта область управляется такими атрибутами, как левое, верхнее, нижнее положение, ширина и высота.
При использовании процентов можно использовать атрибуты смещения, чтобы применять фиксированные корректировки к границам на основе процентов — Например, чтобы панель занимала 100% высоты экрана, исключая фиксированную по высоте панель навигации внизу, установите значение высоты 100%, а |
<SafeBounds> | Задаёт безопасную область внутри границ панели, которая не перекрывается вырезами или вставками дисплея, чтобы обеспечить совместимость с приложениями, отображаемыми внутри неё. Её атрибуты аналогичны атрибутам <Bounds> . |
<Corner> | Определяет радиус скругления углов панели, допуская скругление, и содержит атрибут радиуса (целое число). Острый угол используется по умолчанию и не требует определения. |
<Insets> | Задаёт отступы (поля) для панели. Содержит атрибуты «слева», «сверху», «справа» и «снизу». Эти отступы передаются приложениям, запущенным на панели.
|
<Background> | Добавляет дополнительную панель фонового декора для предотвращения эффекта прозрачности при переключении приложений. Она определяет такие свойства, как цвет и альфа-канал, для этого слоя декора. Свойства слоя декора, такие как границы и слой, по умолчанию соответствуют свойствам варианта, если они не заданы ранее. |
Пример кода
<Variant id="@id/opened">
<Visibility isVisible="true"/>
<Bounds left="0dp"
top="0dp"
right="100%"
bottom="100%"
bottomOffset="100dp"/>
<Alpha value="1.0"/>
<Layer value="10"/>
<Focus onTransition="true"/>
<Corner radius="24dp"/>
<Insets left="16dp" top="0dp" right="16dp" bottom="48dp"/>
<Background color="@color/app_background" alpha="0.9"/>
</Variant>
Интерполировать визуальные свойства
Используйте KeyFrameVariant
для интерполяции визуальных свойств. Это специализированное расширение variant
основано на непрерывном дробном значении (от 0 до 1), что обеспечивает плавные, динамические переходы, управляемые непрерывным вводом, например, при перетаскивании, когда состояние панели динамически изменяется в зависимости от величины перетаскивания.
XML-атрибуты
KeyFrameVariant
нет атрибутов. Тег <KeyFrameVariant>
содержит информацию, необходимую для определения KeyFrameVariant
.
Дочерние элементы XML
KeyFrameVariant
содержит один или несколько дочерних тегов <KeyFrame>
. Каждый тег <KeyFrame>
имеет атрибут framePosition
(0–100) и ссылается на атрибут варианта (идентификатор другого варианта). Эти keyframes
определяют состояние панели в определённых точках непрерывного перехода.
Код Samole
<KeyFrameVariant id="@id/panel_resizing">
<KeyFrame framePosition="0" variant="@id/minimized"/>
<KeyFrame framePosition="75" variant="@id/opened"/>
<KeyFrame framePosition="100" variant="@id/expanded"/>
</KeyFrameVariant>