鸿蒙应用调整屏幕方向(竖屏,横屏,反向横屏,反向竖屏)¶
2025-08-22 创建文档
- 2025-08-22 创建文档
开发环境
- DevEco Studio 5.1.0 Release
- ArkTS
- nova14(HarmonyOS NEXT 5.1.0)
示例项目的配置¶
- "modelVersion": "5.0.5"
- "targetSdkVersion": "5.0.5(17)"
- "compatibleSdkVersion": "5.0.5(17)"
- "runtimeOS": "HarmonyOS"
鸿蒙应用屏幕方向示意图(来源鸿蒙官网)
应用预设为横屏¶
在entry/src/main/module.json5中设定应用的默认方向 "orientation": "landscape"
代码中调整屏幕的方向¶
使用的ArkUI的window
主要使用方法:
window.getPreferredOrientation()
获取当前屏幕方向window.setPreferredOrientation
设置屏幕方向
获取窗口
private context = this.getUIContext().getHostContext() as common.UIAbilityContext;
private windowClass = (this.context).windowStage.getMainWindowSync()
先获取当前方向,然后设置切换到下一个方向
/**
* 切换到下一个方向
*/
private changeNextOrientation(windowClass: window.Window) {
if (windowClass.getPreferredOrientation() == window.Orientation.LANDSCAPE) {
windowClass.setPreferredOrientation(window.Orientation.PORTRAIT)
.then(() => {
hilog.info(1, "main", "切换成功" + windowClass.getPreferredOrientation());
}).catch((err: Error) => {
hilog.error(1, "main", "切换fail" + err);
});
} else if (windowClass.getPreferredOrientation() == window.Orientation.PORTRAIT) {
windowClass.setPreferredOrientation(window.Orientation.LANDSCAPE_INVERTED)
.then(() => {
hilog.info(1, "main", "切换成功" + windowClass.getPreferredOrientation());
}).catch((err: Error) => {
hilog.error(1, "main", "切换fail" + err);
});
} else if (windowClass.getPreferredOrientation() == window.Orientation.LANDSCAPE_INVERTED) {
windowClass.setPreferredOrientation(window.Orientation.PORTRAIT_INVERTED)
.then(() => {
hilog.info(1, "main", "切换成功" + windowClass.getPreferredOrientation());
}).catch((err: Error) => {
hilog.error(1, "main", "切换fail" + err);
});
} else {
// - 横屏
windowClass.setPreferredOrientation(window.Orientation.LANDSCAPE)
.then(() => {
hilog.info(1, "main", "切换成功" + windowClass.getPreferredOrientation());
}).catch((err: Error) => {
hilog.error(1, "main", "切换fail" + err);
});
}
}
实例页面的完整代码如下:
import { common } from '@kit.AbilityKit'
import { window } from '@kit.ArkUI'
import { hilog } from '@kit.PerformanceAnalysisKit';
@Entry
@Component
struct Index {
@State message: string = 'Hello World';
private context = this.getUIContext().getHostContext() as common.UIAbilityContext;
private windowClass = (this.context).windowStage.getMainWindowSync()
build() {
RelativeContainer() {
Text(this.message)
.id('HelloWorld')
.fontSize($r('app.float.page_text_font_size'))
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: '__container__', align: VerticalAlign.Center },
middle: { anchor: '__container__', align: HorizontalAlign.Center }
})
.onClick(() => {
this.message = 'Welcome';
hilog.info(1, "main", "当前:" + this.windowClass.getPreferredOrientation());
this.changeNextOrientation(this.windowClass);
})
}
.height('100%')
.width('100%')
}
/**
* 切换到下一个方向
*/
private changeNextOrientation(windowClass: window.Window) {
if (windowClass.getPreferredOrientation() == window.Orientation.LANDSCAPE) {
windowClass.setPreferredOrientation(window.Orientation.PORTRAIT)
.then(() => {
hilog.info(1, "main", "切换成功" + windowClass.getPreferredOrientation());
}).catch((err: Error) => {
hilog.error(1, "main", "切换fail" + err);
});
} else if (windowClass.getPreferredOrientation() == window.Orientation.PORTRAIT) {
windowClass.setPreferredOrientation(window.Orientation.LANDSCAPE_INVERTED)
.then(() => {
hilog.info(1, "main", "切换成功" + windowClass.getPreferredOrientation());
}).catch((err: Error) => {
hilog.error(1, "main", "切换fail" + err);
});
} else if (windowClass.getPreferredOrientation() == window.Orientation.LANDSCAPE_INVERTED) {
windowClass.setPreferredOrientation(window.Orientation.PORTRAIT_INVERTED)
.then(() => {
hilog.info(1, "main", "切换成功" + windowClass.getPreferredOrientation());
}).catch((err: Error) => {
hilog.error(1, "main", "切换fail" + err);
});
} else {
// - 横屏
windowClass.setPreferredOrientation(window.Orientation.LANDSCAPE)
.then(() => {
hilog.info(1, "main", "切换成功" + windowClass.getPreferredOrientation());
}).catch((err: Error) => {
hilog.error(1, "main", "切换fail" + err);
});
}
}
}
屏幕方向:
- 横屏 window.Orientation.LANDSCAPE
- 竖屏 window.Orientation.PORTRAIT_INVERTED
- 反向横屏 window.Orientation.LANDSCAPE_INVERTED
- 反向竖屏 window.Orientation.PORTRAIT_INVERTED
参考:
本站说明
一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。如有疑问和建议,欢迎在下方评论~