HarmonyOS 鸿蒙Next 横竖屏设置问题

发布于 1周前 作者 songsunli 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 横竖屏设置问题

我写了一个设置屏幕方向的方法 在调用时 设置了横屏 window.Orientation.LANDSCAPE,没有报错,但是页面却没有旋转横屏,这是为什么?
/**

  • 设置当前设备屏幕方向。
  • @param setOrientation */ public static setOrientation(orientation: number) { window.getLastWindow(getContext()).then((win) => { win.setPreferredOrientation(orientation).then((data) => { Logger.debug('setWindowOrientation: ’ + orientation + ’ Succeeded. Data: ’ + JSON.stringify(data)); }).catch((err: string) => { Logger.debug('setWindowOrientation: Failed. Cause: ’ + JSON.stringify(err)); }); }).catch((err: string) => { Logger.debug('setWindowOrientation: Failed to obtain the top window. Cause: ’ + JSON.stringify(err)); }); }

更多关于HarmonyOS 鸿蒙Next 横竖屏设置问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

鸿蒙是通过传感器实现横竖屏切换。

需要注意的是,只有在主窗口设置才会生效。你的函数中,window从哪儿来的?如果是子窗口,不会生效。

EntryAbility
onWindowStageCreate(windowStage: window.WindowStage): void {
// Main window is created, set main page for this ability

globalThis.windowClass = windowStage.getMainWindowSync();

windowStage.loadContent('pages/RotationTestPage', (err) => {
if (err.code) {
hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
return;
}

hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');
});
}

使用 globalThis.windowClass就可生效。

更多关于HarmonyOS 鸿蒙Next 横竖屏设置问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,横竖屏设置通常通过配置文件和系统API共同实现。具体步骤如下:

  1. 配置文件修改

    • config.json文件中,找到或添加与屏幕方向相关的配置项。
    • 配置requiredOrientations字段,可设置为["portrait"](竖屏)或["landscape"](横屏),也可使用["portrait", "landscape"]允许两种方向。
  2. 代码层设置

    • 在应用的Activity或Page代码中,可以通过调用系统API来动态设置屏幕方向。
    • 使用windowManager.getDefaultDisplay().getOrientation()获取当前屏幕方向。
    • 通过setRequestedOrientation方法设置新的屏幕方向,参数为ActivityInfo.SCREEN_ORIENTATION_PORTRAIT(竖屏)或ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE(横屏)。
  3. 注意事项

    • 确保配置文件和代码层设置一致,避免冲突。
    • 某些设备或系统版本可能对屏幕方向有特定限制,需测试确认。

示例代码(伪代码,具体实现需参考鸿蒙API文档):

// 假设有一个设置屏幕方向的函数
function setScreenOrientation(orientation) {
    windowManager.setRequestedOrientation(orientation);
}

// 调用函数设置横屏
setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

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

回到顶部