概览

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

  • 提供灵活的窗口系统。

  • 最大限度地降低了界面实现所带来的工程风险、成本和复杂性。

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

福利和合规性

可伸缩界面的优势包括:

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

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

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

  • 性能更佳:可伸缩界面基于高性能的窗口化基础构建,与标准 Android 完全集成。过渡顺畅且可优化。

核心组成要素

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

这种 XML 驱动的方法可解决在 AAOS 中管理复杂窗口系统时遇到的常见挑战,例如与精确定位、Z 顺序冲突和应用焦点相关的问题。

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

面板

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

变体

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

过渡

过渡定义了面板如何从当前状态 fromVariant 移动到新状态 toVariant。过渡效果可由 Event 触发,并且可以定义面板在状态更改期间经历的动画。 面板应从当前状态移动到 toVariant。对于同步,所有过渡都由核心窗口管理器进行动画处理和协调。

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

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

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

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

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

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

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

系统界面按钮

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

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

何时实现系统界面

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

创建持久性多面板布局

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

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

实现动态首页场景

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

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

应用情境叠加层

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

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

设计复杂的面板互动

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

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