使用可伸缩界面 在汽车中打造复杂、动态且多面板的用户体验。可伸缩界面:
提供灵活的窗口系统。
最大限度地降低了兼容性测试套件 (CTS) 为界面实现带来的工程风险、成本和复杂性。
可伸缩界面支持各种需要动态窗口排列的现代车载信息娱乐系统 (IVI) 设计,同时还可缩减以支持采用静态窗口排列的传统体验。
Android 17 引入了以下特定于高级窗口的功能:
体验示例
可伸缩界面支持无限多种窗口配置。以下是一些为练习可伸缩界面而创建的示例场景:
带有浮动应用的地图背景
地图背景配置,其他应用浮动在顶部。
应用背景
应用背景配置,带有浮动面板。
其他应用下的固定应用
固定应用(例如微件容器),其他应用在顶部启动。
条件浮动面板
仅在满足特定条件时才会显示的条件浮动面板,例如在播放媒体或触发提醒时。
靠近驾驶员的固定应用
固定应用,位置更靠近驾驶员。
分屏布局
分屏布局,并排显示两个应用。
互动式分屏
互动式分屏布局,允许动态调整大小。
适用于大屏幕的多锚点布局
专为大屏幕设计的多锚点布局。
主屏幕应用轮播界面
主屏幕布局,包含应用轮播界面。
优势和合规性
可伸缩界面的优势包括:
降低测试风险:该框架已预先获得认证,并且符合 CTS,这消除了在程序周期后期测试失败的主要风险。 可伸缩界面可以节省数月的工程工作量,并加快合规性。
更灵活的设计:能够重现大量复杂的现有汽车窗口模型。可伸缩界面支持雄心勃勃且高度差异化的设计。
降低实现复杂性:抽象为高级别、配置驱动的 XML 模型,降低了自定义窗口逻辑的门槛。
提升性能:可伸缩界面基于高性能窗口基础运行,与标准 Android 完全集成。过渡流畅,允许直接优化。
核心构建块
可伸缩界面最大限度地减少了对 OEM 特定代码的需求,简化了更新,并通过消除陷阱和减少认证问题降低了发布风险。
基于 XML 的方法解决了在 AAOS 中管理复杂窗口系统时遇到的常见挑战,例如精确定位、Z 顺序冲突和应用焦点。
可伸缩界面提供了以下核心构建块。
面板
面板是屏幕上的基本矩形容器。每个面板都映射到专用的根 任务,以便进行独立管理。面板可以托管
应用任务 (TaskPanel) 或基于视图的内容,例如微件 (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;对于必须放置在 TaskPanels 之间的视图形式的界面元素,请使用 DecorPanels。
实现动态主场景
实现由多个同时可见且可互动的应用面板组成的主场景 。例如,地图、媒体播放器和应用网格。
如需将所有相关面板过渡到其 opened 或 default 主变体,请配置 _System_HomeEvent。
应用情境叠加层
放置非应用界面元素,例如情境微件、自定义品牌和可与应用任务协调动画的拖动条。
对于所有纯装饰性或微件托管元素,请使用 DecorPanels。如果
微件托管一个功能齐全、可启动的应用,则 Panel > TaskPanel 是
最佳选择。当分层必须与 TaskPanel 分层同步时,请对基于视图的界面元素使用 DecorPanels。
设计复杂的面板互动
设计高级用户驱动的操作,例如动态调整应用面板的大小或根据主显示内容调整仪表盘视图。
定义自定义 Events 以触发特定的非系统标准 Transitions。