正向横屏与反向横屏回调 - HarmonyOS 鸿蒙Next

正向横屏与反向横屏回调 - HarmonyOS 鸿蒙Next 【设备信息】Mate60

【API版本】Api13

【DevEco Studio版本】5.0.7.200

【问题描述】

如何监听系统正向横屏、反向横屏变化.

使用媒体查询只能区分横屏或者竖屏, 正向横屏旋转至反向横屏不会触发此回调, 对此场景是否提供直接的API监听方式?

mediaquery.matchMediaSync(’(orientation: landscape)’);

3 回复

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调整或逻辑处理。

回到顶部