HarmonyOS 鸿蒙Next中请问如何设置应用强制横屏

HarmonyOS 鸿蒙Next中请问如何设置应用强制横屏 在预览器打开后应用一直默认是竖屏的,如何让应用强制横屏

10 回复

有文档       ,

更多关于HarmonyOS 鸿蒙Next中请问如何设置应用强制横屏的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


2种方法,第一种修改module.json5文件中的orientation字段:

{
  "module": {
    "abilities": [
      {
        "orientation": "landscape" // 横屏配置
      }
    ]
  }
}

第二种在Ability的onWindowStageCreate生命周期中设置横屏:

import window from '@ohos.window';

onWindowStageCreate(windowStage: window.WindowStage) {
  let windowClass: window.Window;
  windowStage.getMainWindow((err, win) => {
    if (err) return;
    windowClass = win;
    // 设置横屏方向
    windowClass.setPreferredOrientation(window.Orientation.LANDSCAPE)
      .then(() => {
        console.log('Set landscape succeeded');
      })
  })
}

谢谢大佬🥹

参考一下这个官网的文档:https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-multi-device-window-direction#section8706181135512

应用启动之后,还需要改变显示方向的场景(例如视频播放竖屏切换横屏),开发者可通过window的setPreferredOrientation()方法实现。

setWindowOrientation(orientation: window.Orientation): void {
this.mainWindow.setPreferredOrientation(orientation)
.then(() => {
hilog.info(0x0000, 'testLog', `Succeeded in setting window orientation.`);
// Update window orientation.
this.mainWindowInfo.orientation = orientation;
})
.catch((err: BusinessError) => {
hilog.error(0x0000, 'testLog', `Failed to set window orientation. Code: ${err.code}, message: ${err.message}`);
});
}

cke_1303.png

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17

谢谢老哥,

共同学习进步,

在HarmonyOS Next中,设置应用强制横屏需在module.json5配置文件的abilities字段下,为目标ability添加orientation属性并设置为landscape。示例代码如下:

"abilities": [
  {
    "name": "EntryAbility",
    "orientation": "landscape"
  }
]

此配置将使该ability在启动时强制保持横屏显示。

在HarmonyOS Next中,可以通过以下两种主要方式实现应用强制横屏:

1. 在模块配置文件(module.json5)中声明 在您的应用模块的 src/main/resources/base/profile/module.json5 文件中,找到或添加 abilities 字段下的对应UIAbility配置,并设置 orientation 属性为 landscape

{
  "module": {
    "abilities": [
      {
        "name": "EntryAbility",
        "orientation": "landscape"
      }
    ]
  }
}

此方法声明后,该UIAbility对应的所有页面默认都将以横屏模式启动和显示。

2. 在页面代码中动态设置 您也可以在ArkTS页面代码中,通过 window 模块动态设置屏幕方向。

import { window } from '@kit.ArkUI';

window.getLastWindow(this.context).then((win) => {
  win.setPreferredOrientation(window.Orientation.LANDSCAPE);
});

关于预览器(Previewer):在DevEco Studio的预览器中,应用默认遵循模拟设备的设置。要测试横屏效果,请点击预览器上方的设备旋转按钮或使用快捷键(如Ctrl/Cmd + ←)手动旋转预览设备视图。应用的实际横屏行为(由上述代码控制)在真机或模拟器上运行时会生效。

总结:推荐使用第一种在配置文件中声明的方式,这是声明式、全局的强制横屏方法。第二种方式提供了在运行时动态控制的能力。请根据您的具体场景选择。

回到顶部