实现浮动通知面板

在 Android 17 及更高版本中,浮动通知 (HUN) 的可伸缩界面可让您使用可伸缩界面框架和运行时资源叠加层 (RRO) 自定义 HUN 面板的窗口管理(定位、背景遮罩、动画)。借助此功能,您可以控制通知的容器,而不会影响内部内容呈现。

实现

实现 HUN 的可伸缩界面涉及以下内容:

  • 公共 API 和系统 API: 在可伸缩界面解析器中引入 HunWindow 类和 <HunPanel> XML 标记解析逻辑。
  • 合作伙伴实现
    • 定义自定义 RRO 叠加层。
    • 如需创建 XML 文件(例如 res/xml/hun_panel.xml),请使用 <HunPanel> 根标记。
    • 定义 <Variant> 元素以控制边界、重力(TOPBOTTOM)、可见性和背景(遮罩可绘制对象)。
    • 使用 <Transitions>将变体映射到系统事件(例如 _System_Show_Panel)。
  • 新设备与升级设备: 这是由 RRO 进行的配置更改。如需升级设备以接收新的系统映像,请创建适当的 RRO 以定义 HUN 行为。这样,用户就可以偏离默认设置。
  • 启用或停用: 如需启用或停用此功能,请在 window_states 配置中添加或移除 @xml/hun_panel
  • 默认设置: 应用您自己的 RRO(该 RRO 会替换系统默认配置)来更改默认设置。

要求和验证

请按以下顺序测试启用和停用叠加层:

adb shell cmd overlay disable --user current com.example.overlay.scalableUI.hun.bottom

如果您启用或停用 RRO,HUN 将分别显示在底部或顶部。

手动验证

  • 定位: 验证 HUN 是否显示在指定的重力(TOPBOTTOM)和边界处。
  • 互动: 验证滑动以关闭是否有效(如果无法关闭,请验证按钮是否有效)。
  • 动画: 验证打开和关闭状态之间的过渡动画。