HarmonyOS 鸿蒙Next 横竖屏设置问题
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共同实现。具体步骤如下:
-
配置文件修改:
- 在
config.json
文件中,找到或添加与屏幕方向相关的配置项。 - 配置
requiredOrientations
字段,可设置为["portrait"]
(竖屏)或["landscape"]
(横屏),也可使用["portrait", "landscape"]
允许两种方向。
- 在
-
代码层设置:
- 在应用的Activity或Page代码中,可以通过调用系统API来动态设置屏幕方向。
- 使用
windowManager.getDefaultDisplay().getOrientation()
获取当前屏幕方向。 - 通过
setRequestedOrientation
方法设置新的屏幕方向,参数为ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
(竖屏)或ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
(横屏)。
-
注意事项:
- 确保配置文件和代码层设置一致,避免冲突。
- 某些设备或系统版本可能对屏幕方向有特定限制,需测试确认。
示例代码(伪代码,具体实现需参考鸿蒙API文档):
// 假设有一个设置屏幕方向的函数
function setScreenOrientation(orientation) {
windowManager.setRequestedOrientation(orientation);
}
// 调用函数设置横屏
setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html