使用可伸缩界面在汽车中打造复杂、动态且多面板的用户体验。可伸缩界面:
提供灵活的窗口系统。
最大限度地降低了用户界面实现所面临的兼容性测试套件 (CTS) 工程风险、成本和复杂性。
可伸缩界面支持各种需要动态窗口排列的现代车载信息娱乐系统 (IVI) 设计。
Android 17 引入了以下特定于高级窗口的功能:
体验示例
可伸缩界面支持各种各样的窗口配置。以下是为测试可伸缩界面而创建的几个示例场景:
地图背景,带有浮动应用
地图背景配置,其他应用浮动在顶部。
应用后台
具有浮动面板的应用后台配置。
其他应用下的固定应用
已固定的应用(例如 widget 容器),其他应用在其上启动。
条件浮动面板
一种有条件的浮动面板,仅在满足特定条件时显示,例如在播放媒体时或触发提醒时。
让固定应用更靠近驾驶员
固定应用的位置更靠近驾驶员。
分屏布局
分屏布局,左右并排显示两个应用。
互动式分屏
一种支持动态调整大小的交互式分屏布局。
适用于大屏设备的多锚点布局
一种专为大屏设计的锚定布局。
主屏幕应用轮播界面
一种包含应用轮播界面的主屏幕布局。
福利和合规性
可伸缩界面的优势包括:
降低测试风险:该框架已预先获得认证,并符合 CTS 要求,从而消除了在计划周期后期出现测试失败的主要风险。可扩缩的界面可节省数月的工程工作量,并加快合规流程。
设计灵活性更高:能够重现众多复杂的现有汽车窗格模型。可扩缩的界面支持大胆且高度差异化的设计。
降低了实现复杂性:抽象为高级别、配置驱动的 XML 模型,降低了自定义窗口化逻辑的门槛。
性能更佳:可扩缩的界面在高性能窗口化基础上运行,与标准 Android 完全集成。过渡流畅,可直接优化。
核心构建块
可扩缩的界面可最大限度地减少对 OEM 特定代码的需求,简化更新流程,并通过消除陷阱和减少认证问题来降低启动风险。
这种 XML 驱动的方法可解决在 Android Automotive OS (AAOS) 中管理复杂窗口系统时遇到的常见难题,例如精确定位、Z 顺序冲突和应用焦点。
可伸缩界面提供这些核心构建块。
面板
面板是屏幕上的基本矩形容器。每个面板都映射到一个专用的根任务,以便进行独立管理。面板可以托管应用任务 (TaskPanel) 或基于视图的内容,例如 widget (DecorPanel)。如需了解详情,请参阅配置面板。
变体
变体定义了面板的特定视觉状态,并包含 bounds(位置和大小)、visibility、layer(Z 顺序)和 corner 半径等属性。单个面板可以有多种变体,例如 opened、closed 或 minimized。如需了解详情,请参阅使用变体设计视觉状态。
过渡
过渡定义了面板如何从当前状态 fromVariant 移动到新状态 toVariant。Event 会触发过渡,该过渡定义了面板在状态变化期间使用的动画。面板应从当前状态移动到 toVariant。对于同步,核心窗口管理器会为所有过渡效果添加动画效果并进行协调。
- 事件:用于触发界面更改。OEM 或系统可以预定义触发器。例如
_System_OnHomeEvent、_System_TaskOpenEvent或自定义导航按钮按压。
例如,可伸缩界面使用事件来触发过渡。这些过渡效果可将面板从一个变体动画化为另一个变体,以显示界面中的动态变化。可伸缩界面会将这些更改告知其他系统应用,以便根据需要调整内容。通过在 XML 中定义界面关系,您可以:
指定复杂的界面行为:定义复杂的界面互动。
安排窗口系统:控制窗口位置和分层。
实现视觉主题:应用一致的品牌和美学风格。
降低代码复杂性:尽量减少对大量自定义代码开发的需求。
如需了解详情,请参阅配置过渡。
系统界面按钮
除了触发 intent 之外,CarSystemBarButtons 在使用 event、selectedEvent 和 unselectedEvent 属性点按时,还可以触发可伸缩界面事件。
event 描述的是点按按钮时要触发的事件。如果需要更精细地控制事件,请使用 selectedEvent 和 unselectedEvent 属性分别指定在选中或取消选中按钮时触发的事件。
何时实现系统界面
本部分介绍了可缩放界面的最佳使用方式。
创建持久性多面板布局
创建多区域体验,使屏幕的不同区域永久专用于特定功能。例如,专用媒体控件、气候控制条或全屏地图。
使用 TaskPanels 表示主要应用(例如导航),使用 DecorPanels 表示必须放置在 TaskPanels 之间的视图形式的界面元素。
实现动态家居场景
实现一个由多个并发可见的交互式应用面板组成的首页场景。例如,地图、媒体播放器和应用网格。
如需将所有相关面板过渡到其 opened 或 default 主页变体,请配置 _System_HomeEvent。
应用情境叠加层
放置非应用界面元素,例如情境微件、自定义品牌信息和可与应用任务协调动画效果的拖动条。
对于所有纯装饰性元素或 widget 托管元素,请使用 DecorPanels。如果 widget 托管的是可启动的完整应用,则 Panel > TaskPanel 是最佳选择。当分层必须与 TaskPanel 分层同步时,请对基于视图的界面元素使用 DecorPanels。
设计复杂的面板互动
设计高级用户驱动的操作,例如根据主显示屏内容动态调整应用面板大小或调整仪表盘视图。
定义自定义 Events 以触发特定的非系统标准 Transitions。