HarmonyOS 鸿蒙Next中请问如何设置应用强制横屏
HarmonyOS 鸿蒙Next中请问如何设置应用强制横屏 在预览器打开后应用一直默认是竖屏的,如何让应用强制横屏
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');
})
})
}
谢谢大佬🥹
应用启动之后,还需要改变显示方向的场景(例如视频播放竖屏切换横屏),开发者可通过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}`);
});
}

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
谢谢老哥,
共同学习进步,
在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 + ← 或 →)手动旋转预览设备视图。应用的实际横屏行为(由上述代码控制)在真机或模拟器上运行时会生效。
总结:推荐使用第一种在配置文件中声明的方式,这是声明式、全局的强制横屏方法。第二种方式提供了在运行时动态控制的能力。请根据您的具体场景选择。


