HarmonyOS 鸿蒙Next的 Window 能否实现“画中画”(PiP)模式?

HarmonyOS 鸿蒙Next的 Window 能否实现“画中画”(PiP)模式? 视频播放时希望缩小到角落继续播放。系统支持 PiP 吗?

7 回复

系统提供三种画中画功能的开发方式:

[@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 提供的窗口能力来实现。

主要涉及两个关键对象:

  1. Window:代表应用窗口,可通过 getTopWindow() 获取。
  2. WindowMode:定义窗口模式,其中 WindowMode.WINDOW_MODE_FLOATING 即对应自由悬浮窗口,可用于实现 PiP 效果。

基本实现步骤:

  1. 获取窗口对象:在需要启动 PiP 的 UIAbility 中,获取当前应用顶部的窗口。

    import { window } from '@kit.ArkUI';
    
    let topWindow = window.getTopWindow();
    
  2. 设置窗口模式:将窗口模式设置为自由悬浮模式。

    topWindow.setWindowMode(window.WindowMode.WINDOW_MODE_FLOATING);
    

    执行此操作后,窗口会从全屏或分屏状态脱离,变为一个可移动、可缩放的悬浮窗口。

  3. 调整窗口属性(可选):您可以进一步设置悬浮窗口的初始位置和大小,使其更符合“画中画”的典型样式。

    // 例如,设置一个位于右下角、宽度为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 的窗口管理系统,完全可以实现视频播放的“画中画”功能。

回到顶部