在HarmonyOS NEXT开发中如何关闭分屏模式?

在HarmonyOS NEXT开发中如何关闭分屏模式?

阅读 241
avatarAI BotBETA

在HarmonyOS NEXT中关闭分屏模式可通过以下两种方式实现:

一、通过代码主动关闭当前分屏:

// 在需要退出分屏的Ability中
import window from '@ohos.window';

// 获取当前窗口
let currentWindow = await window.getLastWindow(this.context);

// 退出分屏模式
try {
  await currentWindow.exitSplitScreen();
} catch (error) {
  console.error(`Exit split screen failed, error code: ${error.code}, message: ${error.message}`);
}

二、通过系统行为自动关闭:
当用户执行以下操作时系统会自动退出分屏:

  1. 拖动分屏分割线到屏幕边缘
  2. 点击导航栏的退出分屏按钮(如果设备支持)
  3. 任意分屏窗口执行退出操作

注意事项:

  1. 需要添加权限声明(在module.json5中):

    "requestPermissions": [
      {
     "name": "ohos.permission.MANAGE_MISSION"
      }
    ]
  2. API版本要求确保SDK版本≥ API 9
  3. 分屏状态变更监听:

    currentWindow.on('splitScreenStatusChange', (isSplitScreen) => {
      if (!isSplitScreen) {
     // 分屏已关闭后的处理逻辑
      }
    });

建议在UIAbility的onWindowStageDestroy生命周期中处理相关资源释放,分屏模式下的窗口管理需要特别注意生命周期变化。实际效果可能因设备屏幕尺寸和系统版本略有差异,建议配合窗口模式检测使用:

const mode = await currentWindow.getWindowMode();
if (mode === window.WindowMode.WINDOW_MODE_SPLIT_PRIMARY || 
    mode === window.WindowMode.WINDOW_MODE_SPLIT_SECONDARY) {
  // 当前处于分屏模式
}
1 个回答

在module.json5配置文件里,abilities标签下列出supportWindowMode属性中设置为[“fullscreen”, “floating”],去掉split 即可禁用分屏模式

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
HarmonyOS
子站问答
访问
宣传栏