正向横屏与反向横屏回调 - HarmonyOS 鸿蒙Next
正向横屏与反向横屏回调 - HarmonyOS 鸿蒙Next 【设备信息】Mate60
【API版本】Api13
【DevEco Studio版本】5.0.7.200
【问题描述】
如何监听系统正向横屏、反向横屏变化.
使用媒体查询只能区分横屏或者竖屏, 正向横屏旋转至反向横屏不会触发此回调, 对此场景是否提供直接的API监听方式?
mediaquery.matchMediaSync(’(orientation: landscape)’);
display接口
- 使用display接口获取当前旋转方向,可以放置在监听中持续获取
display.getDefaultDisplaySync().rotation;
其中,orientation的枚举如下:
枚举 | 值 | 描述 |
---|---|---|
PORTRAIT | 1 | 表示竖屏显示模式。 |
系统能力:SystemCapability.WindowManager.WindowManager.Core。 | ||
元服务API:从API version 11开始,该接口支持在元服务中使用。 |
| LANDSCAPE | 2 | 表示横屏显示模式。 | | | | 元服务API:从API version 12开始,该接口支持在元服务中使用。 | | | | 系统能力:SystemCapability.WindowManager.WindowManager.Core。 |
| PORTRAIT_INVERTED | 3 | 表示反向竖屏显示模式。 | | | | 系统能力:SystemCapability.WindowManager.WindowManager.Core。 | | | | 元服务API:从API version 12开始,该接口支持在元服务中使用。 |
| LANDSCAPE_INVERTED | 4 | 表示反向横屏显示模式。 | | | | 系统能力:SystemCapability.WindowManager.WindowManager.Core。 | | | | 元服务API:从API version 12开始,该接口支持在元服务中使用。 |
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5#orientation9
更多关于正向横屏与反向横屏回调 - HarmonyOS 鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
mediaquery.matchMediaSync这种方式确实只能监听到横屏和竖屏
想要监听到反向横屏竖屏可以使用display.on监听
但是这个接口不只是监听屏幕旋转,屏幕基础属性变化都会引起display.on(change)的回调
参考代码
import { display } from '@kit.ArkUI';
@Entry
@Component struct Index{
aboutToAppear(): void {
let callback = () => {
let orientation: display.Orientation = display.getDefaultDisplaySync().orientation;
switch (orientation){
case display.Orientation.PORTRAIT: {
console.log(`竖屏-${orientation.toString()}`)
break
}
case display.Orientation.LANDSCAPE: {
console.log(`横屏-${orientation.toString()}`)
break
}
case display.Orientation.PORTRAIT_INVERTED: {
console.log(`反向竖屏-${orientation.toString()}`)
break
}
case display.Orientation.LANDSCAPE_INVERTED: {
console.log(`反向横屏-${orientation.toString()}`)
break
}
}
}
try {
display.on("change", callback); // 监听屏幕状态改变
} catch (exception) {
console.error('Failed to register callback. Code: ' + JSON.stringify(exception));
}
}
}
在HarmonyOS鸿蒙Next中,正向横屏与反向横屏的回调是通过OrientationEventListener
来实现的。该监听器可以检测设备的方向变化,并在方向变化时触发相应的回调方法。通过onOrientationChanged
方法,开发者可以获取当前设备的方向角度,并根据角度判断设备是处于正向横屏还是反向横屏状态。正向横屏通常对应角度为90度,反向横屏通常对应角度为270度。开发者可以在回调中处理不同的横屏状态,进行相应的UI调整或逻辑处理。