微图科技
微图科技
  • 发布:2026-05-28 12:03
  • 更新:2026-05-28 12:04
  • 阅读:38

【报Bug】华为三折叠、扩折叠横屏锁定后内屏仍然会竖屏打开APP

分类:鸿蒙Next

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win11

HBuilderX类型: Alpha

HBuilderX版本号: 5.11

手机系统: HarmonyOS NEXT

手机系统版本号: HarmonyOS 6.0.0

手机厂商: 华为

手机机型: HUAWEI MATE XTs | ULTIMATEDESIGN

页面类型: vue

vue版本: vue3

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

"pageOrientation": "auto",

操作步骤:

华为三折叠锁定旋转后再内屏直接打开app

预期结果:

横屏旋转锁定,那么app就横屏打开

实际结果:

横屏旋转锁定,app仍然竖屏打开

bug描述:

1、使用uni-app x开发的移动端app,设置了"pageOrientation": "auto",在鸿蒙三折叠、阔折叠手机设置了横屏旋转锁定,且横屏拿着手机,为什么在内屏打开app时仍旧是竖屏展示app;
2、如果不设置旋转锁定那么就能根据物理状态横屏或者竖屏展示app,但是应用启动时仍会先以竖屏方向出现,随后才旋转到横屏,产生一个切换动画

2026-05-28 12:03 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

知识库不足。请补充HBuilderX版本、详细报错信息及复现步骤,以便进一步分析鸿蒙三折叠屏横竖屏异常问题。
欢迎到专业群( uni-app x技术交流群 ) 咨询,群中有相关专业的管理员和群友。

好的,我们来评审一下这个 bug 反馈。

反馈内容完整性分析

整体来看,这个 bug 反馈的质量较高,关键信息基本齐全。

  • 问题描述:非常清晰,分两点说明了问题。第一点是系统级旋转锁定与 pageOrientation: "auto" 的冲突,第二点是启动时屏幕方向切换的时序和动画问题。这两个问题描述得具体、明确,官方人员完全能理解现象。
  • 代码示例:提供的 "pageOrientation": "auto" 是核心配置,准确且直接点明了问题所在。
  • 复现步骤:步骤简洁,但结合详细的设备型号(HUAWEI MATE XTs)、系统版本(HarmonyOS 6.0.0)和问题描述,已经构成了足以复现的条件。特别是明确了“锁定旋转后再内屏直接打开”这一关键操作。
  • 预期与实际结果:预期结果合理,即“横屏旋转锁定,那么app就横屏打开”,这符合用户对系统级设置的直觉。实际结果与预期不符,存在明确的偏差。
  • 分类信息:非常完整。提供了开发环境、HBuilderX 版本(Alpha版,5.11)、手机 OS 平台及版本、设备型号等关键信息。因为问题发生在鸿蒙折叠屏设备上,这些信息对排查至关重要。

问题分析与判断

针对你反馈的两个问题,我结合知识库信息进行如下分析:

1. 关于问题一:系统旋转锁定后,内屏打开应用仍为竖屏

这个问题的核心在于,鸿蒙系统(HarmonyOS)的旋转锁定机制与 uni-app x 的 pageOrientation: "auto" 配置之间存在平台特性冲突。

根据华为官方文档《三折叠应用开发 - 常见问题》中明确指出,三折叠设备在特定折叠状态(G态)下,系统层面仅支持竖屏,无法旋转。更关键的是,华为在其《窗口方向 - 典型场景 - 应用首页案例》中推荐,对于首页这类场景,应使用 FOLLOW_DESKTOP 策略。该策略的特点是:在直板机/折叠态下仅支持竖屏,在平板/展开态下支持自由旋转,并且“受控制中心旋转开关的控制”。

这意味着,当你开启系统旋转锁定后,系统会告知应用“当前不允许旋转”。此时,即使应用中设置了 pageOrientation: "auto",应用也必须遵循系统的最高指令,保持在当前(很可能是默认竖屏)方向。你描述的“锁定旋转后在内屏打开App仍是竖屏”,正是此系统级行为的表现。

uni-app x 目前没有提供动态控制屏幕旋转的 API,只能通过 pages.json 配置(见优先知识库《旋转屏幕从竖屏切换未横屏的APi》)。因此,在鸿蒙折叠屏上,auto 模式的行为由系统策略主导,无法通过 uni-app x 的配置项直接覆盖系统的旋转锁定。

结论:此问题并非 uni-app x 的缺陷,而是鸿蒙系统为折叠屏设备设计的标准旋转策略。这个 bug 不成立。

2. 关于问题二:应用启动时先竖屏再旋转到横屏,产生切换动画

这是一个已知且已修复过的问题。在 ISSUE 系统中,有一个与你描述高度相似的问题:横屏参数导致启动页面的时候会有一个切换的动作。该问题的处理结果是“已发版”,处理方案是“ios/android 保持相同逻辑,主动传递屏幕方向,保持双端逻辑一致”。

另外,还有一个相关 ISSUE:启动页不能锁定屏幕方向的Bug,状态也是“已发版”,提到了“手机横置启动时启动页会以横屏布局显示的问题”已修复。

虽然这两个问题已修复,但考虑到你使用的是 5.11 Alpha 版,这类时序或动画问题可能在特定设备(如新型号的三折叠)或特定系统版本上出现回归。此外,ISSUE 系统中还有一个与你相似的现象:我关闭锁定旋转,然后手机正常拿冷启动打开x开发的软件没问题,也横不过来。但是如果我冷启动就躺着横着拿的时候,进入会横屏随后旋转正常,但是旋转回来一个字体有问题。我全部用的rpx,该问题目前状态为“待确认”,说明启动时的横竖屏切换动画和布局适配问题仍是一个持续优化的点。

结论:此问题很可能是一个已知的、在特定场景下复现的兼容性问题。

替代方案与建议

  1. 针对问题一(系统旋转锁定冲突)

    • 这是系统级行为,应用层无法直接对抗。建议在产品设计上考虑这一特性,比如在应用内提供“锁定横屏”的功能,当用户开启后,通过设置 pageOrientation: 'landscape' 来锁定,但这仍然无法绕开系统级的旋转锁定。
    • 你可以去插件市场搜索一下,看是否有插件针对鸿蒙平台做了更底层的屏幕方向适配,例如这个插件 鸿蒙横屏,竖屏设置,它提供了动态设置横竖屏的方法,或许能提供一些参考。
  2. 针对问题二(启动时切换动画)

    • 可以尝试将应用全局或首页的 pageOrientationauto 改为固定的 landscapeportrait,这样能从根本上避免启动时的方向切换和动画。如果应用的某个页面需要自动旋转,再单独为该页面配置 pageOrientation: 'auto'
    • 在应用启动时,可以先用闪屏页(Splash Screen)做一个缓冲,等待屏幕方向稳定后再跳转到主页面,这在一定程度上能优化用户体验。

最后,建议你将问题二在 DCloud 官方 ISSUE 系统 中提交一个新的 issue,并提供 5.11 Alpha 版本和 HUAWEI MATE XTs 设备的详细信息,这有助于官方团队在新设备上进行回归测试和进一步优化。

内容为 AI 生成,仅供参考

要回复问题请先登录注册