一、全局横竖屏设置,在module.json5下,对当前UIAbility配置orientation,如下:
{
"module": {
"name": "entry",
"type": "entry",
...
"abilities": [
{
"name": "EntryAbility",
...
"orientation": "auto_rotation",
...
}
]
}
}
orientation属性列表如下:
orientation属性 | 描述 |
unspecified |
未指定方向,由系统自动判断显示方向 |
landscape |
横屏 |
portrait |
竖屏 |
landscape_inverted |
反向横屏 |
portrait_inverted |
反向竖屏 |
auto_rotation |
随传感器旋转 |
auto_rotation_landscape |
传感器横屏旋转,包括横屏和反向横屏 |
auto_rotation_portrait |
传感器竖屏旋转,包括竖屏和反向竖屏 |
auto_rotation_restricted |
传感器开关打开,方向可随传感器旋转 |
auto_rotation_landscape_restricted |
传感器开关打开,方向可随传感器旋转为横屏, 包括横屏和反向横屏 |
auto_rotation_portrait_restricted |
传感器开关打开,方向随可传感器旋转为竖屏, 包括横屏和反向横屏 |
locked |
传感器开关关闭,方向锁定 |
二、对单个Entry,自定义页面设置横竖屏
在页面内通过 Window 对象的 setPreferredOrientation() 方法实现横竖屏切换,如下:
@Component
@Entry
struct DemoPage {
...
aboutToAppear(): void {
let context = getContext(this) as common.UIAbilityContext
window.getLastWindow(context).then((lastWindow)=> {
lastWindow.setPreferredOrientation(window.Orientation.LANDSCAPE)
})
}
}