HarmonyOS 鸿蒙Next中关于界面级一多开发

HarmonyOS 鸿蒙Next中关于界面级一多开发 界面级一多开发中,窗口方向配置在哪个文件?

11 回复

界面级一多开发本身没有单独的“窗口方向配置文件”。

一般是在模块的:

entry/src/main/module.json5

里的 abilities 节点配置 orientation

例如:

{
  "module": {
    "abilities": [
      {
        "name": "EntryAbility",
        "orientation": "portrait"
      }
    ]
  }
}

常用取值:

portrait                 // 竖屏
landscape                // 横屏
auto_rotation            // 跟随传感器旋转
unspecified              // 系统决定

如果做界面级一多开发,通常不建议强制锁定方向,而是:

手机 → 竖屏布局
平板 → 横屏/自由旋转布局
折叠屏 → 根据窗口尺寸适配

这种场景一般通过窗口尺寸和断点适配实现,而不是靠 orientation 强行切换。需要运行时动态修改方向的话,可以在 EntryAbility 中通过:

window.setPreferredOrientation(...)

进行设置。

更多关于HarmonyOS 鸿蒙Next中关于界面级一多开发的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


背景知识:

  • 界面级一多开发里,应用自身的窗口方向(横竖屏、多窗偏好)在 module.json5;系统 / 设备默认窗口方向在 display_manager_config.xml。

1、应用层(一多开发常用)

module.json5

{
  "module": {
    "abilities": [
      {
        "name": "EntryAbility",
        // 1. 启动方向(基础)
        "orientation": "landscape", // portrait/auto_rotation/follow_desktop
        // 2. 一多/多窗偏好方向(关键)
        "preferMultiWindowOrientation": "landscape_auto" // landscape/portrait/landscape_auto
      }
    ]
  }
}

2、系统 / 设备层

display_manager_config.xml

  • 源码路径:foundation/window/window_manager/resources/config/[设备名]/display_manager_config.xml
  • 系统路径:/system/etc/window/resources/display_manager_config.xml
<!-- 内置屏幕默认方向 -->
<buildInDefaultOrientation>2</buildInDefaultOrientation>
<!-- 0:未指定 1:竖屏 2:横屏 3:反向竖屏 4:反向横屏 -->

3、动态代码设置

// UIAbility 或页面内
import { window } from '@kit.BasicServicesKit';
window.getLastWindow(this.context)?.setPreferredOrientation(window.Orientation.LANDSCAPE);

模块下:
cke_1006.png

窗口方向配置在 module.json5 文件中,具体是每个 Ability 的 orientation 字段

{
  "module": {
    "name": "entry",
    "type": "entry",
    "abilities": [
      {
        "name": "EntryAbility",
        "orientation": "unspecified",   // ← 这里配置窗口方向
        // ... 其他配置
      }
    ]
  }
}

目前HarmonyOS系统中设备的显示方向有四种,

orientation取值范围如下:

unspecified:由系统自动判断显示方向。

landscape:横屏模式。

portrait:竖屏模式。

followRecent:跟随栈中最近的应用。

如有帮助给个采纳谢谢

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

窗口方向的配置主要在**模块级配置文件 module.json5**中进行。该文件位于工程中每个模块的 src/main/module.json5路径下

cke_215.png

参考:

https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-multi-device-window-direction

有个官方demo:

https://gitcode.com/HarmonyOS_Samples/WindowOrientation

你好,可以通过代码去控制窗口方向:setPreferredOrientation

window.getLastWindow(this.getUIContext().getHostContext()).then((win) => {
  win.setPreferredOrientation(isLandscape ? window.Orientation.LANDSCAPE : window.Orientation.PORTRAIT)
})

主要在模块级配置文件 module.json5中配置。需要在 module.json5文件的 abilities数组下的每个 Ability 配置项中,通过 orientation字段来设置该 Ability 的初始窗口旋转策略。这个配置属于应用级或窗口级的静态配置,会影响应用启动时的显示方向。

下面是一个简单的配置,你可以试一下看看:

配置文件位置:module.json5文件位于工程中每个模块的 src/main/目录下( entry/src/main/module.json5)。

核心配置字段:在 abilities数组中,为每个 Ability 配置 orientation字段。例如:

{
  "module": {
    // ... 其他模块配置
    "abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        // ... 其他Ability配置
        "orientation": "portrait", // 此处配置窗口方向
        // ...
      }
    ]
  }
}

在鸿蒙应用开发中,为应用配置窗口方向主要有两种方式,您可以根据具体需求选择其中一种或结合使用:

  1. 通过配置文件进行静态设置 这是一种在应用启动前就确定窗口方向的方式,适用于整个应用或特定Ability需要固定显示方向的场景。

    配置文件位置 :在项目的 module.json5 文件中。

    如何配置 :在 abilities 数组中的某个Ability对象下,添加一个名为 "orientation" 的字段,并为其赋值。例如,如果您希望应用默认以竖屏模式启动,可以这样写: 此处是代码

    常用取值

    • "portrait" :仅竖屏显示。
    • "landscape" :仅横屏显示。
    • "auto_rotation" :跟随设备传感器自动旋转。
    • "autorotationrestricted" :跟随传感器旋转,但受系统控制中心的“自动旋转”开关控制。
  2. 通过代码调用接口进行动态设置 这种方式允许您在应用运行过程中,根据不同的业务场景(如进入全屏视频播放页时)动态地改变窗口方向。

    实现方法 :在需要改变屏幕方向的地方,通过代码调用窗口管理API来设置。通常会使用 setPreferredOrientation 方法。以下是一个ArkTS的代码示例: 此处是代码

注意事项

  • 优先级 :动态代码设置的优先级高于配置文件。如果在代码中调用了 setPreferredOrientation,它会覆盖 module.json5 中的静态设置。
  • 状态恢复 :如果您在某个特定页面改变了屏幕方向,当用户退出该页面时,建议将屏幕方向恢复到原始状态,以免影响其他页面的显示效果。
  • 系统设置 :请注意,即使应用设置了跟随传感器旋转,最终能否旋转也取决于手机系统的“自动旋转”开关是否已开启。

在HarmonyOS 鸿蒙Next中,界面级一多开发通过ArkUI的布局能力实现,包括自适应布局(如Flex、百分比、weight)和响应式布局(基于断点监听)。多态组件(如SideBarContainer、Navigation)在v2语法中配合@Adapter@Container装饰器,可简化不同屏幕形态下的界面适配。

窗口方向配置在模块的 module.json5 文件中。在该配置文件内,找到对应 Ability 的 abilities 数组,为需要控制方向的 Ability 添加或修改 orientation 属性,例如设置为 "portrait"(竖屏)、"landscape"(横屏)或 "auto_rotation"(跟随传感器自动旋转)等。此配置决定了该 Ability 的窗口初始方向及允许的旋转行为,是界面级一多开发中控制窗口方向的基础入口。

回到顶部