Skip to content

fix(ohos): 横屏小窗判定改用系统自由窗口模式,修复2in1/平板自由多窗/电脑模式下进出全屏界面整体缩放 - #184

Merged
wm-develop merged 1 commit into
dev4harmony:ohosfrom
wm-develop:fix/ohos-2in1-fullscreen-scale
Sep 24, 2026
Merged

wm-develop merged 1 commit into
dev4harmony:ohosfrom
wm-develop:fix/ohos-2in1-fullscreen-scale

Conversation

@wm-develop

Copy link
Copy Markdown
Member

问题#183

在 2in1(PC)、平板开启自由多窗、平板电脑模式下,应用窗口状态恒为 FLOATING,被当成手机/平板的「系统小窗」处理:窗口内进入横屏全屏时套用了横屏小窗的 0.75 缩放与 enableLandscapeMultiWindow,每次进出全屏界面整体缩放一次,观感即 DPI 突变。

修复

  • 原生通过 Window.isInFreeWindowMode()(API 22,与 compatibleSdkVersion 一致)判断窗口是否处于系统自由窗口模式,随 getWindowState 下发初值,并监听 freeWindowModeChange,运行中开关自由多窗/切换电脑模式时实时推送给 Dart。
  • Dart 侧「横屏小窗」判定改为 _miniWindow && _landscape && !_freeWindowMode;模式变化时重新评估缩放(抽出 _applyMiniWindowLandscape() 复用)。
  • 不按 deviceType 判断:平板(含带电脑模式的 MatePad Edge,实测上报 tablet)都不是 2in1,且自由多窗可在运行中开关。

@wm-develop
wm-develop merged commit adf9ea9 into dev4harmony:ohos Sep 24, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant