面板用于描述其所占区域的属性,并充当应用容器。您可以使用 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>
面板定义
可伸缩界面框架中的每个面板都使用名为 <TaskPanel>
的 XML 标记进行定义,该标记用于描述应用容器的属性。系统界面会加载这些面板定义,并跟踪面板,直到加载另一个配置。
例如,因旋转或明确的系统请求而导致的配置变更。<TaskPanel>
是一个基础组件,用于通过可配置的界面组件打造自定义体验。
XML 属性
<TaskPanel>
标记可以包含以下属性,您可以使用这些属性来定义状态和过渡。
属性 | 状态 | 说明 |
---|---|---|
id |
强制 | 指定面板的唯一标识符。此属性用于从 PanelPool 中检索面板,并在系统内管理其状态。 |
role |
强制 | 定义了系统中面板的用途或功能。该值可以是指向字符串资源、组件名称的字符串数组或布局 ID。例如,它可以定义应始终显示在面板上的持久性 activity,或要扩充的布局。 |
defaultVariant |
可选 | 指定面板在加载时应最初采用的变体的 ID。如果未指定,系统可以使用第一个定义的变体作为默认变体。 |
displayId |
可选 | 指定面板要显示到的显示屏的 ID。 |
defaultLayer |
可选 | 如果变体未明确定义图层,则可以为面板的变体指定默认 Z 顺序。 |
controller |
可选, 可能会发生变化 |
引用定义了面板专用控制器(通常是 XML ID)的资源,该控制器允许存储配置值并将其传递给自定义面板控制器。 这些控制器应实现 |
XML 子元素
<TaskPanel>
标记可以包含以下属性来定义特征和默认行为,
属性 | 说明 |
---|---|
<Variant> |
嵌套标记用于描述面板在任何给定时间的特定视觉配置。一个面板可以有多个变体,每个变体都有一个唯一 ID。 每个变体都定义了相应配置的边界、可见性、图层、Alpha、圆角半径和边衬区等属性。变体还可以从父变体继承属性。 |
<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>