概览

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

  • 提供灵活的窗口系统。

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

可伸缩界面支持各种需要动态窗口排列的现代车载信息娱乐系统 (IVI) 设计。

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

体验示例

可伸缩界面支持各种各样的窗口配置。以下是为测试可伸缩界面而创建的几个示例场景:

地图背景,带有浮动应用

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

应用后台

具有浮动面板的应用后台配置。

其他应用下的固定应用

已固定的应用(例如 widget 容器),其他应用在其上启动。

条件浮动面板

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

让固定应用更靠近驾驶员

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

分屏布局

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

互动式分屏

一种支持动态调整大小的交互式分屏布局。

适用于大屏设备的多锚点布局

一种专为大屏设计的锚定布局。

一种包含应用轮播界面的主屏幕布局。

福利和合规性

可伸缩界面的优势包括:

  • 降低测试风险:该框架已预先获得认证,并符合 CTS 要求,从而消除了在计划周期后期出现测试失败的主要风险。可扩缩的界面可节省数月的工程工作量,并加快合规流程。

  • 设计灵活性更高:能够重现众多复杂的现有汽车窗格模型。可扩缩的界面支持大胆且高度差异化的设计。

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

  • 性能更佳:可扩缩的界面在高性能窗口化基础上运行,与标准 Android 完全集成。过渡流畅,可直接优化。

核心构建块

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

这种 XML 驱动的方法可解决在 Android Automotive OS (AAOS) 中管理复杂窗口系统时遇到的常见难题,例如精确定位、Z 顺序冲突和应用焦点。

可伸缩界面提供这些核心构建块。

面板

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

变体

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

过渡

过渡定义了面板如何从当前状态 fromVariant 移动到新状态 toVariantEvent 会触发过渡,该过渡定义了面板在状态变化期间使用的动画。面板应从当前状态移动到 toVariant。对于同步,核心窗口管理器会为所有过渡效果添加动画效果并进行协调。

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

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

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

  • 安排窗口系统:控制窗口位置和分层。

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

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

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

系统界面按钮

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

event 描述的是点按按钮时要触发的事件。如果需要更精细地控制事件,请使用 selectedEventunselectedEvent 属性分别指定在选中或取消选中按钮时触发的事件。

何时实现系统界面

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

创建持久性多面板布局

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

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

实现动态家居场景

实现一个由多个并发可见的交互式应用面板组成的首页场景。例如,地图、媒体播放器和应用网格。

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

应用情境叠加层

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

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

设计复杂的面板互动

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

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