HarmonyOS 鸿蒙Next中如何在代码中进行横竖屏的切换

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next中如何在代码中进行横竖屏的切换

在做视频组件的时候,发现华为提供的全屏方法,并没有处理横竖屏的切换?所以我们需要去手动的切换横竖屏,这块代码如何处理?

2 回复
1.可以在module.json5中设置"orientation"属性值为"auto_rotation",应用即具备横竖屏切换能力。若需要横竖屏切换受系统控制(打开自动旋转生效,关闭失效),可以赋值为"auto_rotation_restricted"

示例代码:

"abilities": [
{
  ···
  "orientation": "auto_rotation",
  ···
}
] 

参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/module-configuration-file-V13#abilities标签

2.调用窗口管理的api进行横竖屏切换

示例代码:

onPageShow(): void {
  window.getLastWindow(getContext(this), (err, win) => {
  win.setPreferredOrientation(window.Orientation.LANDSCAPE_INVERTED)
})
}

参考文档:       https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-window-V13#setpreferredorientation9

更多关于HarmonyOS 鸿蒙Next中如何在代码中进行横竖屏的切换的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS 鸿蒙Next中,进行横竖屏切换的代码实现主要依赖于对窗口(Window)的显示方向(Orientation)的设置。以下是在代码中进行横竖屏切换的方法:

  1. 获取窗口对象

    • 在EntryAbility.ets的onWindowStageCreate生命周期中,通过windowStage.getMainWindowSync()获取窗口对象,并保存到数据结构中以便后续使用。
  2. 设置横竖屏

    • 使用窗口对象的setPreferredOrientation方法设置显示方向。
    • 例如,设置为横屏可使用window.Orientation.LANDSCAPE或window.Orientation.LANDSCAPE_INVERTED,设置为竖屏可使用window.Orientation.PORTRAIT。
  3. 监听窗口尺寸变化

    • 在窗口尺寸变化时,通过监听windowSizeChange事件来适配横竖屏布局。

示例代码如下:

let window = windowStage.getMainWindowSync();
// 设置为横屏
window.setPreferredOrientation(window.Orientation.LANDSCAPE);
// 监听窗口尺寸变化
window.on('windowSizeChange', (data) => {
  // 根据宽度和高度调整布局
});

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部