HarmonyOS 横竖屏切换问题

应用内包含两组页面,分别属于不同的windows,A组页面可能有横屏场景,B组页面无横屏场景。目前使用以下方式设置A组某页面横屏:

private async changeWindowOrientation(isLandscape: boolean): Promise<void> {
  // 改变界面横竖屏状态和导航栏的隐藏显示状态
  const mainWindow = await xxxx.getWindowStage().getMainWindow();
  await mainWindow.setPreferredOrientation(isLandscape ? window.Orientation.LANDSCAPE : window.Orientation.PORTRAIT);
  await mainWindow.setSpecificSystemBarEnabled('status', isLandscape ? false : true);
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

点击B组某页面内按钮后,开启A组某页面A组某页面设置为横屏后,导致B组页面也被设置为横屏,此时B组页面内涉及使用屏幕宽高计算的逻辑被影响,如弹出弹框等。针对以上场景是否有更好的解决方案,需要满足A组页面正常设置横屏2、B组页面无需适配横屏(B组页面没有横屏业务场景,适配横屏感觉不合理)。

HarmonyOS
2024-12-24 16:20:04
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
superinsect

可以使用临时旋转 USER_ROTATION_LANDSCAPE等,参考文档:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-window-V5#orientation9

需要设置的页面加一个:

onPageShow(): void {
  console.log('displayModule onPageShow')
  window.getLastWindow(getContext(this), (err, win) => {
    win.setPreferredOrientation(window.Orientation.LANDSCAPE)
  })
}

onPageHide() {
  console.log('displayModule onPageHide')
  window.getLastWindow(getContext(this), (err, win) => {
    win.setPreferredOrientation(window.Orientation.PORTRAIT)
  })
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
分享
微博
QQ
微信
回复
2024-12-24 19:58:12


相关问题
HarmonyOS 横竖切换
1118浏览 • 1回复 待解决
HarmonyOS 监听横竖切换
958浏览 • 1回复 待解决
HarmonyOS 横竖切换实现过于繁琐
986浏览 • 1回复 待解决
HarmonyOS 平板无法正确横竖切换
909浏览 • 1回复 待解决
页面横竖如何进行切换
1236浏览 • 1回复 待解决
如何进行页面横竖切换
2891浏览 • 1回复 待解决
求大佬告知如何切换横竖
3058浏览 • 1回复 待解决
HarmonyOS 小窗下如何实现横竖切换
958浏览 • 1回复 待解决
HarmonyOS 横竖设置问题
617浏览 • 1回复 待解决
HarmonyOS 设置横竖问题
628浏览 • 1回复 待解决
如何监听设备横竖切换状态呢
2572浏览 • 1回复 待解决
如何监听手机屏幕的横竖切换
1217浏览 • 1回复 待解决
鸿蒙横竖切换监听,需要这个功能
12187浏览 • 3回复 已解决
如何实现page页面的横竖切换
1386浏览 • 1回复 待解决
鸿蒙JS 框架中如何主动切换横竖?
5702浏览 • 1回复 待解决