HarmonyOS 查询当前状态是横屏还是竖屏?

通过下面代码可以监听横屏竖屏切换事件:

let listener = mediaquery.matchMediaSync(’(orientation: landscape)’); //监听横屏事件那么初始化时怎样主动查询当前是横屏还是竖屏呢?

阅读 566
1 个回答

1.可以通过diplay.on可以监听屏幕状态改变。其中可以在module.json5中设置EntryAbility为orientation,或者使用window.setPreFerredOrientation动态设置窗口横竖屏。

2.屏幕横竖屏监听:当监听到变化时,可以通过发布订阅的方式全局通知。module.json5里面配置 “orientation”: “auto\_rotation”,让屏幕自动旋转。win.setPreferredOrientation(window.Orientation.PORTRAIT) ,设置横屏或者竖屏。win.on(“windowSizeChange”, (data) =\> {}),监听横竖屏变化。onConfigurationUpdate生命周期中监听屏幕变化。

对于窗口的横竖屏可以借助display.getDefaultDisplaySync().orientation这个属性来判断屏幕目前所处的横竖屏状态。参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-display-V5

示例代码:

let oritation:number=display.getDefaultDisplaySync().orientation;
switch (oritation){
case display.Orientation.PORTRAIT:this.status=‘竖屏’;break;
case display.Orientation.LANDSCAPE:this.status=‘横屏’;break;
case display.Orientation.PORTRAIT_INVERTED:this.status=‘反向竖屏’;break;
case display.Orientation.LANDSCAPE_INVERTED:this.status=‘反向横屏’;break;
default:this.status=‘不知道’;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进