HarmonyOS鸿蒙Next中在Air 24款的鸿蒙5.1系统,以及电脑模拟器的鸿蒙6,Flutter开发的应用,自由多窗下可以随意拖拽为各种比例,但如果只是应用小窗,只能显示为手机的比例,这是什么导致的?ohos项目文件夹里有什么配置文件需要我改的吗?

HarmonyOS鸿蒙Next中在Air 24款的鸿蒙5.1系统,以及电脑模拟器的鸿蒙6,Flutter开发的应用,自由多窗下可以随意拖拽为各种比例,但如果只是应用小窗,只能显示为手机的比例,这是什么导致的?ohos项目文件夹里有什么配置文件需要我改的吗? 在Air 24款的鸿蒙5.1系统,以及电脑模拟器的鸿蒙6,Flutter开发的应用,自由多窗下可以随意拖拽为各种比例,但如果只是应用小窗,只能显示为手机的比例,这是什么导致的?ohos项目文件夹里有什么配置文件需要我改的吗?

  • 鸿蒙4.2平板,可以看到常规小窗模式就支持比例调节。
  • 鸿蒙5.1平板,本来是横屏软件,小窗竟给我改成了竖屏,比例都给我篡改了,而且怎么拖动都无法修改比例,但我明明适配了不同比例窗口。

更多关于HarmonyOS鸿蒙Next中在Air 24款的鸿蒙5.1系统,以及电脑模拟器的鸿蒙6,Flutter开发的应用,自由多窗下可以随意拖拽为各种比例,但如果只是应用小窗,只能显示为手机的比例,这是什么导致的?ohos项目文件夹里有什么配置文件需要我改的吗?的实战教程也可以访问 https://www.itying.com/category-92-b0.html

6 回复

悬浮窗默认是竖屏,想设置成横屏比例的效果,需要应用主动适配横屏的属性值。

在module.json5配置文件中abilities标签下的preferMultiWindowOrientation属性增加“landscape_auto”。

"module": {
  "abilities": [
  {
    "preferMultiWindowOrientation": "landscape_auto"
  }
  ]
}

【背景知识】

  • preferMultiWindowOrientation属性主要标识当前UIAbility多窗布局方向,具体可以参考声明支持悬浮窗中关于preferMultiWindowOrientation的属性的描述。
  • 当设置preferMultiWindowOrientation属性为“landscape_auto”表示多窗布局动态可变为横向,需要配合API(enableLandscapeMultiWindow / disableLandscapeMultiWindow)使用,建议视频或游戏类应用配置。

更多关于HarmonyOS鸿蒙Next中在Air 24款的鸿蒙5.1系统,以及电脑模拟器的鸿蒙6,Flutter开发的应用,自由多窗下可以随意拖拽为各种比例,但如果只是应用小窗,只能显示为手机的比例,这是什么导致的?ohos项目文件夹里有什么配置文件需要我改的吗?的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


  • 目前规格如此,非自由多窗模式只支持16:9或者18:9
  • 进入自由多窗模式可以实现无极调节 【背景知识】
  • 悬浮窗比例与适配

没有解决方案或者规避方案吗,开发者那边还是想设置成横屏比例的效果。

如何在 Ubuntu 22.04 上安装 Python 3.12

步骤 1: 更新系统包列表

在安装 Python 3.12 之前,首先更新系统包列表以确保获取最新的软件包信息。

sudo apt update

步骤 2: 安装依赖项

安装编译 Python 所需的依赖项。

sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev

步骤 3: 下载 Python 3.12 源代码

从 Python 官方网站下载 Python 3.12 的源代码。

wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tgz

步骤 4: 解压源代码包

解压下载的源代码包。

tar -xf Python-3.12.0.tgz

步骤 5: 配置编译选项

进入解压后的目录并配置编译选项。

cd Python-3.12.0
./configure --enable-optimizations

--enable-optimizations 选项会启用优化,可能会使构建过程变慢,但会提高 Python 的性能。

步骤 6: 编译并安装 Python 3.12

编译并安装 Python 3.12。使用 -j 选项可以加速编译过程,数字表示并行编译的任务数,通常设置为 CPU 核心数。

make -j 4
sudo make altinstall

使用 altinstall 而不是 install 可以避免覆盖系统默认的 Python 3 版本。

步骤 7: 验证安装

安装完成后,验证 Python 3.12 是否成功安装。

python3.12 --version

输出应显示:

Python 3.12.0

步骤 8: 安装 pip(可选)

如果尚未安装 pip,可以使用以下命令安装。

sudo apt install -y python3-pip

或者,使用 Python 3.12 自带的 ensurepip 模块安装 pip。

python3.12 -m ensurepip --upgrade

步骤 9: 设置虚拟环境(可选)

为了隔离项目依赖,建议使用虚拟环境。可以使用 venv 模块创建虚拟环境。

python3.12 -m venv myenv
source myenv/bin/activate

要退出虚拟环境,只需运行:

deactivate

总结

现在,您已经在 Ubuntu 22.04 上成功安装了 Python 3.12。您可以使用 python3.12 命令来运行 Python 3.12,并根据需要创建虚拟环境来管理项目依赖。

在鸿蒙Next中,应用小窗默认使用应用配置文件(module.json5)中声明的supportWindowModewindow字段定义的默认窗口属性。自由多窗的灵活比例由系统窗口管理器动态管理。小窗固定为手机比例,是因为应用未声明或系统未启用对小窗模式的自定义尺寸支持。检查module.json5中的window字段,确保designWidth等配置正确,但目前鸿蒙对小窗尺寸的自定义支持有限。

这个问题主要与HarmonyOS Next的窗口管理策略以及Flutter引擎的适配有关。

在自由多窗模式下,系统允许窗口被拖拽为任意尺寸和比例,此时应用的UI布局会触发重建,Flutter引擎可以响应MediaQueryLayoutBuilder的变化进行自适应布局。

但当应用进入“小窗模式”(即固定形态的悬浮窗)时,系统可能会为其应用一个预设的窗口策略。你遇到的“只能显示为手机比例”或“横屏应用被改为竖屏小窗”的情况,很可能是因为系统为该应用的小窗模式默认指定了特定的窗口化规则(Windowization Rule),这个规则可能强制使用了手机设备的显示配置。

关键配置文件:

在OHOS项目的 AppScope > resources > base > profile 目录下, main_pages.json 文件并非控制窗口行为的关键。窗口化规则主要由以下两个文件定义:

  1. module.json5: 在 moduleabilities 配置中,每个UIAbility可以设置 continuablewindow 相关属性,但这更多关乎迁移和基本窗口设置。
  2. WindowizationRule.json (核心): 这个文件用于精细化定义应用在不同场景下的窗口表现,包括小窗模式。你需要检查或创建此文件。

解决方案步骤:

  1. 定位或创建配置文件: 在OHOS项目的 AppScope > resources > base > profile 目录下,查找或新建 WindowizationRule.json 文件。

  2. 配置窗口化规则: 在该文件中,你需要为你的应用定义小窗模式下的行为。一个关键的配置项是 windowProfiles,你可以在这里指定小窗所模拟的设备类型、支持的尺寸范围等。

    示例配置片段(需根据实际情况调整):

    {
      "windowProfiles": [
        {
          "name": "floating_window_profile",
          "windowType": "floating_window",
          "minWindowRatio": 0.3, // 最小宽高比
          "maxWindowRatio": 2.0, // 最大宽高比
          "defaultWindowRatio": 0.75, // 默认宽高比
          "minWindowWidth": 240,
          "minWindowHeight": 240,
          "maxWindowWidth": 720,
          "maxWindowHeight": 1280,
          "orientation": "unspecified" // 或 "landscape" 强制横屏
        }
      ]
    }
    
    • orientation 设置为 "unspecified" 通常可以避免系统强制改变朝向,允许窗口根据其形状自适应。如果你的小窗必须为横屏,可设置为 "landscape"
    • 通过 minWindowRatiomaxWindowRatio 可以限制小窗的可调节比例范围。
  3. 在module.json5中引用规则: 在 module.json5 文件对应的UIAbility配置中,通过 windowizationRule 属性指向你定义的配置文件名(不含路径)。

    {
      "abilities": [
        {
          "name": ".EntryAbility",
          // ... 其他配置
          "windowizationRule": "WindowizationRule.json"
        }
      ]
    }
    
  4. 确保Flutter布局自适应: 确认你的Flutter应用代码已经妥善处理了尺寸变化,例如使用 MediaQuery.of(context).sizeLayoutBuilderAspectRatio 等组件来适应不同宽高比。

总结: 鸿蒙5.1及6.0系统对小窗模式可能有更严格的默认窗口策略。通过自定义 WindowizationRule.json 文件,你可以覆盖系统默认行为,定义小窗所允许的尺寸、比例和朝向,从而解决小窗被锁定为手机比例或错误朝向的问题。修改配置后,请重新编译安装应用进行测试。

回到顶部