HarmonyOS 鸿蒙Next的 Window 能否实现“画中画”(PiP)模式?
HarmonyOS 鸿蒙Next的 Window 能否实现“画中画”(PiP)模式? 视频播放时希望缩小到角落继续播放。系统支持 PiP 吗?
系统提供三种画中画功能的开发方式:
- 使用XComponent实现画中画功能开发:适用于应用通过Navigation管理页面或Ability单页面情况下使用画中画的场景,这种实现方式无需应用管理页面。
- 使用typeNode实现画中画功能开发:适用于所有场景,这种实现方式灵活性高,需要应用自行管理页面,推荐通过该方式使用画中画功能。
- 使用NDK接口实现画中画功能开发:适用于依赖NDK接口开发的应用,需要应用自行管理页面。
[@ohos.PiPWindow (画中画窗口)](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-pipwindow)
更多关于HarmonyOS 鸿蒙Next的 Window 能否实现“画中画”(PiP)模式?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
应用在视频播放、视频会议、视频通话等场景下,可以使用画中画能力将视频内容以小窗(画中画)模式呈现。切换为小窗(画中画)模式后,用户可以进行其他界面操作,提升使用体验。
参考地址
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/pipwindow-overview
哦,学习中
支持的, API Version 11 及以上版本中提供(对应鸿蒙较新的系统版本,如 HarmonyOS 4.0/5.0 及后续版本)。
支持,仅部分APP,还要设置,
HarmonyOS Next的Window支持画中画模式。该功能通过WindowStage的setWindowMode接口实现,可将窗口切换为FLOATING模式。开发者需在module.json5中声明画中画权限,并配置最小化能力。系统提供标准画中画交互,包括窗口移动和尺寸调整。
是的,HarmonyOS Next 支持画中画(PiP)模式。开发者可以通过 Window Manager 提供的窗口能力来实现。
主要涉及两个关键对象:
- Window:代表应用窗口,可通过
getTopWindow()获取。 - WindowMode:定义窗口模式,其中
WindowMode.WINDOW_MODE_FLOATING即对应自由悬浮窗口,可用于实现 PiP 效果。
基本实现步骤:
-
获取窗口对象:在需要启动 PiP 的 UIAbility 中,获取当前应用顶部的窗口。
import { window } from '@kit.ArkUI'; let topWindow = window.getTopWindow(); -
设置窗口模式:将窗口模式设置为自由悬浮模式。
topWindow.setWindowMode(window.WindowMode.WINDOW_MODE_FLOATING);执行此操作后,窗口会从全屏或分屏状态脱离,变为一个可移动、可缩放的悬浮窗口。
-
调整窗口属性(可选):您可以进一步设置悬浮窗口的初始位置和大小,使其更符合“画中画”的典型样式。
// 例如,设置一个位于右下角、宽度为360像素、高度为240像素的窗口 let rect = { left: 100, top: 100, width: 360, height: 240 }; topWindow.moveTo(rect.left, rect.top); topWindow.resize(rect.width, rect.height);
注意事项:
- 应用需要在
module.json5配置文件中申请ohos.permission.SYSTEM_FLOAT_WINDOW悬浮窗权限。 - 从全屏视频切换到 PiP 时,通常需要管理好播放器组件的状态和生命周期,确保视频在窗口模式切换时能无缝继续播放。
- 用户可以通过拖动悬浮窗口来移动位置,通过拖动边缘来调整大小。
因此,利用 HarmonyOS Next 的窗口管理系统,完全可以实现视频播放的“画中画”功能。

