概览

使用可伸缩界面 在汽车中打造复杂、动态且多面板的用户体验。可伸缩界面:

  • 提供灵活的窗口系统。

  • 最大限度地降低了兼容性测试套件 (CTS) 为界面实现带来的工程风险、成本和复杂性。

可伸缩界面支持各种需要动态窗口排列的现代车载信息娱乐系统 (IVI) 设计,同时还可缩减以支持采用静态窗口排列的传统体验。

Android 17 引入了以下特定于高级窗口的功能:

体验示例

可伸缩界面支持无限多种窗口配置。以下是一些为练习可伸缩界面而创建的示例场景:

带有浮动应用的地图背景

地图背景配置,其他应用浮动在顶部。

应用背景

应用背景配置,带有浮动面板。

其他应用下的固定应用

固定应用(例如微件容器),其他应用在顶部启动。

条件浮动面板

仅在满足特定条件时才会显示的条件浮动面板,例如在播放媒体或触发提醒时。

靠近驾驶员的固定应用

固定应用,位置更靠近驾驶员。

分屏布局

分屏布局,并排显示两个应用。

互动式分屏

互动式分屏布局,允许动态调整大小。

适用于大屏幕的多锚点布局

专为大屏幕设计的多锚点布局。

主屏幕布局,包含应用轮播界面。

优势和合规性

可伸缩界面的优势包括:

  • 降低测试风险:该框架已预先获得认证,并且符合 CTS,这消除了在程序周期后期测试失败的主要风险。 可伸缩界面可以节省数月的工程工作量,并加快合规性。

  • 更灵活的设计:能够重现大量复杂的现有汽车窗口模型。可伸缩界面支持雄心勃勃且高度差异化的设计。

  • 降低实现复杂性:抽象为高级别、配置驱动的 XML 模型,降低了自定义窗口逻辑的门槛。

  • 提升性能:可伸缩界面基于高性能窗口基础运行,与标准 Android 完全集成。过渡流畅,允许直接优化。

核心构建块

可伸缩界面最大限度地减少了对 OEM 特定代码的需求,简化了更新,并通过消除陷阱和减少认证问题降低了发布风险。

基于 XML 的方法解决了在 AAOS 中管理复杂窗口系统时遇到的常见挑战,例如精确定位、Z 顺序冲突和应用焦点。

可伸缩界面提供了以下核心构建块。

面板

面板是屏幕上的基本矩形容器。每个面板都映射到专用的 任务,以便进行独立管理。面板可以托管 应用任务 (TaskPanel) 或基于视图的内容,例如微件 (DecorPanel)。 如需了解详情,请参阅配置面板

变体

变体定义了面板的特定视觉状态,包括 bounds(位置和大小)、visibilitylayer(Z 顺序)和 corner 半径等属性。单个面板可以有多种变体,例如 openedclosedminimized。如需了解详情,请参阅使用变体设计视觉状态

转场

过渡定义了面板如何从当前状态 fromVariant 移动到新状态 toVariantEvent 会触发过渡,该过渡定义了面板在状态更改期间使用的动画。面板应从当前状态移动到 toVariant。为了实现同步,核心窗口管理器会对所有过渡进行动画处理和协调。

  • 事件: 用于启动界面更改的触发器。OEM 或系统可以预定义触发器。例如,_System_OnHomeEvent_System_TaskOpenEvent 或自定义导航按钮按键。

例如,可伸缩界面使用事件来触发过渡。这些 过渡会使面板从一个变体动画到另一个变体,以显示界面中的动态 变化。可伸缩界面会将这些更改传达给其他系统应用,以便根据需要调整内容。通过在 XML 中定义界面关系,您可以:

  • 指定复杂的界面行为: 定义复杂的界面互动。

  • 排列窗口系统: 控制窗口定位和分层。

  • 实现视觉主题: 应用一致的品牌和美学。

  • 降低代码复杂性: 最大限度地减少对大量自定义代码开发的需求。

如需了解详情,请参阅配置过渡

系统界面按钮

除了触发 intent 之外,CarSystemBarButtons 在使用 eventselectedEventunselectedEvent 属性点按时,还可以触发 可伸缩界面事件。

event 描述了点按按钮时要触发的事件。如果 需要对事件进行更精细的控制,请使用 selectedEventunselectedEvent 属性来指定在按钮 被选中或取消选中时要触发的事件。

何时实现系统界面

本部分介绍了可伸缩界面的最佳使用方式。

创建永久性多面板布局

创建多区域体验,其中屏幕的不同区域永久专用于特定功能。例如,专用媒体控件、气候条或全屏地图。

对于主要应用(例如导航),请使用 TaskPanels;对于必须放置在 TaskPanels 之间的视图形式的界面元素,请使用 DecorPanels

实现动态主场景

实现由多个同时可见且可互动的应用面板组成的主场景 。例如,地图、媒体播放器和应用网格。

如需将所有相关面板过渡到其 openeddefault 主变体,请配置 _System_HomeEvent

应用情境叠加层

放置非应用界面元素,例如情境微件、自定义品牌和可与应用任务协调动画的拖动条。

对于所有纯装饰性或微件托管元素,请使用 DecorPanels。如果 微件托管一个功能齐全、可启动的应用,则 Panel > TaskPanel 是 最佳选择。当分层必须与 TaskPanel 分层同步时,请对基于视图的界面元素使用 DecorPanels

设计复杂的面板互动

设计高级用户驱动的操作,例如动态调整应用面板的大小或根据主显示内容调整仪表盘视图。

定义自定义 Events 以触发特定的非系统标准 Transitions