【鸿蒙开发从入门到放弃】窗口管理

官方文档

@ohos.window (窗口)-窗口管理-ArkTS API-ArkUI(方舟UI框架)-应用框架 - 华为HarmonyOS开发者

前言

官网对window窗口管理的描述很全面,以下是各人对各个api的总结。

该模块提供以下窗口相关的常用功能: 窗口实例window和窗口管理器windowStage

window

当前窗口实例(windowClass),窗口管理器管理的基本单元。

方法

方法 描述 api
createWindow 创建子窗口或者系统窗口 9
findWindow 查找name所对应的窗口 9
getLastWindow 获取当前应用内最上层的子窗口,若无应用子窗口,则返回应用主窗口 9
shiftAppWindowFocus 在同应用内将窗口焦点从源窗口转移到目标窗口,仅支持应用主窗和子窗的焦点转移。 11
shiftAppWindowPointerEvent 在同应用内窗口分合场景下,需要将输入事件从源窗口转移到目标窗口 15
getWindowsByCoordinate 查询本应用指定坐标下的可见窗口数组,按当前窗口层级排列,层级最高的窗口对应数组下标为0,使用Promise异步回调。 14
getAllWindowLayoutInfo 获取指定屏幕上可见的窗口布局信息数组,按当前窗口层级排列,层级最高的对应数组index为0 15
getVisibleWindowInfo 获取当前屏幕的可见主窗口(未退至后台的主窗口)信息 18

windowClass方法

windowClass为获取的窗口实例, 用于操作目标窗口,在使用前需要通过getLastWindow()createWindow()findWindow()中的任一方法获取。

方法 描述 api
showWindow 显示当前窗口 9
destroyWindow 销毁当前窗口 9
moveWindowTo 移动窗口位置 9
moveWindowToAsync 移动窗口位置, 同步方法, 回调中可使用getWindowProperties()立即获取最终生效结果。 12
moveWindowToAsync 移动窗口位置, 同步方法, 可设置moveConfiguration, 回调中可使用getWindowProperties()立即获取最终生效结果。 15
moveWindowToGlobal 基于屏幕坐标移动窗口位置,使用Promise异步回调 13
moveWindowToGlobal 基于屏幕坐标移动窗口位置,使用Promise异步回调, 可设置moveConfiguration 15
resize 改变当前窗口大小 9
resizeAsync 改变当前窗口大小, 同步方法 12
getWindowProperties 获取当前窗口的属性 9
getWindowDensityInfo 获取当前窗口所在屏幕的系统显示大小缩放系数、系统默认显示大小缩放系数和自定义显示大小缩放系数信息。 15
getGlobalRect 获取窗口在屏幕上的真实显示区域,同步接口。(在某些设备上,窗口显示时可能经过了缩放,此接口可以获取缩放后窗口在屏幕上的真实位置和大小。) 13
getWindowAvoidArea 获取当前应用窗口避让区。 9
setSystemAvoidAreaEnabled 创建悬浮窗、模态窗或WindowType窗口类型为系统窗口时,可以调用该接口使能窗口获取避让区 18
isSystemAvoidAreaEnabled 获取悬浮窗、模态窗或WindowType为系统类型的窗口是否可以获取窗口内容的避让区 18
setTitleAndDockHoverShown 设置主窗口进入全屏沉浸式时鼠标Hover到热区上是否显示窗口标题栏和dock栏,使用Promise异步回调,仅2in1设备可用。 14
setWindowLayoutFullScreen 设置主窗口或子窗口的布局是否为沉浸式布局,从API version 14开始,该接口在2in1设备或平板设备的自由多窗模式(可点击设备控制中心中的自由多窗按钮开启)下调用不生效。 9
setImmersiveModeEnabledState 设置当前窗口是否开启沉浸式布局,该调用不会改变窗口模式和窗口大小, 2in1 和平板不生效 12
getImmersiveModeEnabledState 查询当前窗口是否已经开启沉浸式布局。 12
setWindowDelayRaiseOnDrag 设置窗口是否使能延迟抬升,仅主窗和子窗可设置。 19
setWindowSystemBarEnable 设置主窗口状态栏、底部导航(根据用户设置,可表现为导航条或三键导航栏)的可见模式,2in1设备不生效 9
setSpecificSystemBarEnabled 设置主窗口状态栏、底部导航区域的显示和隐藏,2in1设备不生效 11
setWindowSystemBarProperties 设置主窗口状态栏的属性,2in1设备不生效 9
getWindowSystemBarProperties 主窗口获取状态栏的属性。 12
setStatusBarColor 设置主窗口状态栏的文字颜色,使用Promise异步回调。该接口在2in1设备上调用不生效。子窗口不支持设置状态栏文字颜色,调用无效果。 18
getStatusBarProperty 获取主窗口状态栏的属性 18
setPreferredOrientation 设置主窗口的显示方向属性,仅在支持跟随sensor旋转的设备上生效, 2in1设备不生效 9
getPreferredOrientation 主窗口调用,获取窗口的显示方向属性。 12
getUIContext 获取UIContext实例。 10
setUIContent 根据当前工程中指定的某个页面路径为窗口加载具体页面内容。 9
loadContent 根据当前工程中指定的页面路径为窗口加载具体页面内容,通过LocalStorage传递状态属性给加载的页面。 9
loadContentByName 加载命名路由,加载LocalStorage。重复调用该接口将先销毁旧的页面内容再加载新的页面内容,请谨慎使用。 11
isWindowShowing 判断当前窗口是否已显示。 9
isWindowSupportWideGamut 判断当前窗口是否支持广色域模式。 9
setWindowColorSpace 设置当前窗口为广色域模式或默认色域模式 9
getWindowColorSpace 获取当前窗口色域模式。 9
setWindowBackgroundColor 设置窗口的背景色 9
setWindowBrightness 允许应用主窗口设置屏幕亮度值 9
setWindowFocusable 设置窗口是否具有获得焦点的能力 9
setWindowKeepScreenOn 设置屏幕是否为常亮状态 9
setWindowPrivacyMode 设置窗口是否为隐私模式(用于禁止截屏/录屏的场景) 9
setWindowTouchable 设置窗口是否为可触状态 9
snapshot 获取窗口截图, 隐私模式为白屏 9
snapshotIgnorePrivacy 获取窗口截图, 隐私模式不影响 18
setAspectRatio 设置窗口内容布局的比例 10
resetAspectRatio 取消设置窗口内容布局的比例 10
minimize 当调用对象为主窗口时,实现最小化功能,当调用对象为子窗口或悬浮窗时,实现隐藏功能 11
maximize 实现最大化功能。主窗口可调用此接口实现最大化功能;子窗口需在创建时设置子窗口参数maximizeSupported为true,再调用此接口可实现最大化功能 12
setResizeByDragEnabled 设置窗口是否使能通过拖拽进行缩放 14
recover 将主窗口从全屏、最大化、分屏模式下还原为浮动窗口,并恢复到进入该模式之前的大小和位置,已经是浮动窗口模式不可再还原 11
restore 将主窗口从最小化状态,恢复到前台显示,并恢复到进入该模式之前的大小和位置 14
getWindowLimits 获取当前应用窗口的尺寸限制。 11
setWindowLimits 设置当前应用窗口的尺寸限制 11
setWindowLimits 设置当前应用窗口的尺寸限制, 此接口仅支持2in1设备 15
setWindowMask 设置异形窗口的掩码 12
keepKeyboardOnFocus 窗口获焦时保留由其他窗口创建的软键盘 11
setWindowDecorVisible 设置窗口标题栏是否可见,对存在标题栏和三键区的窗口形态生效 11
getWindowDecorVisible 查询窗口标题栏是否可见,仅支持2in1设备和平板的自由多窗模式 18
setWindowTitle 设置窗口标题,存在标题栏的窗口形态生效,若不存在标题栏则返回1300002错误码 15
setWindowTitleMoveEnabled 设置窗口是否可移动窗口和双击最大化,仅支持2in1设备和平板的自由多窗模式 14
setSubWindowModal 设置子窗的模态属性是否启用 12
setSubWindowModal 设置子窗的模态属性是否启用,新增设置子窗的模态类型 14
setWindowDecorHeight 设置窗口的标题栏高度,仅支持2in1设备或平板设备的自由多窗模式 11
setDecorButtonStyle 设置装饰栏按钮样式,仅支持2in1设备或平板设备的自由多窗模式 14
getDecorButtonStyle 获取装饰栏按钮样式 14
getWindowDecorHeight 获取窗口的标题栏高度 11
getTitleButtonRect 获取主窗口或启用装饰的子窗口的标题栏上的最小化、最大化、关闭按钮矩形区域 11
getWindowStatus 获取当前应用窗口的模式 12
isFocused 判断当前窗口是否已获焦 12
createSubWindowWithOptions 创建主窗口、子窗口或悬浮窗下的子窗口 12
setParentWindow 更改子窗口的父窗口,该父窗口仅支持主窗口、子窗口或悬浮窗 19
getParentWindow 获取子窗口的父窗口 19
setWindowTitleButtonVisible 设置主窗标题栏上的最大化、最小化、关闭按钮是否可见 14
setWindowTopmost 设置主窗口置顶 14
raiseToAppTop 提升应用子窗口到顶层 14
setRaiseByClickEnabled 是否启用子窗口抬升功能 14
enableLandscapeMultiWindow 应用部分界面支持横向布局时,在进入该界面时使能,使能后可支持进入横向多窗 12
disableLandscapeMultiWindow 禁止进入横向多窗 12
setDialogBackGestureEnabled 设置模态窗口是否响应手势返回事件 12
startMoving 开始移动窗口 14
startMoving 指定鼠标在窗口内的位置并移动窗口 15
stopMoving 停止窗口移动 15
setGestureBackEnabled 设置当前窗口是否禁用返回手势功能,仅主窗全屏模式下生效,2in1设备下不生效 13
isGestureBackEnabled 获取当前窗口是否禁用返回手势功能,仅主窗全屏模式下生效,2in1设备不生效。 13
setWindowShadowRadius 设置子窗或悬浮窗窗口边缘阴影的模糊半径,此接口仅支持在2in1设备或平板设备上使用 17
setWindowCornerRadius 设置子窗或悬浮窗的圆角半径值,此接口仅支持在2in1设备或平板设备上使用 17
getWindowCornerRadius 获取子窗或悬浮窗的圆角半径值,此接口仅支持在2in1设备或平板设备上使用 17
setExclusivelyHighlighted 设置窗口独占激活态属性 15
isWindowHighlighted 获取当前窗口是否为激活态 18
setFollowParentMultiScreenPolicy 设置子窗或模态窗口(即WindowType为TYPE_DIALOG的窗口)的布局信息(position和size)是否跟随主窗。 17
on 监听事件 9
off 关闭监听 9
setWindowGrayScale 设置窗口灰阶 12

事件

事件 描述 api
windowSizeChange 窗口尺寸变化的监听 7
avoidAreaChange 应用窗口系统规避区变化的监听 9
keyboardHeightChange 开启固定态软键盘高度变化的监听 7
keyboardDidShow 固定态软键盘显示动画完成触发 18
keyboardDidHide 固定态软键盘隐藏动画完成触发 18
touchOutside 本窗口区域范围外的点击出发 11
screenshot 截屏事件 9
dialogTargetTouch 开启模态窗口所遮盖窗口的点击或触摸事件的监听 10
windowEvent 窗口生命周期变化 10
displayIdChange 本窗口所处屏幕变化事件的监听 14
windowVisibilityChange 可见状态变化事件的监听 11
systemDensityChange 本窗口所处屏幕的系统显示大小缩放系数变化事件的监听 15
noInteractionDetected 本窗口在指定超时时间内无交互事件的监听,交互事件支持物理键盘输入事件和屏幕触控点击事件,不支持软键盘输入事件。 12
windowStatusChange 窗口模式变化的监听 11
windowTitleButtonRectChange 窗口标题栏上的最小化、最大化、关闭按钮矩形区域变化的监听 11
windowRectChange 窗口位置及窗口大小变化触发 12
subWindowClose 子窗口关闭事件 12
windowWillClose 主窗口或子窗口关闭事件 15
windowHighlightChange 窗口激活态变化事件 15
rotationChange 窗口旋转变化事件 19

WindowStage

窗口管理器, 下列方法和事件都需在onWindowStageCreate()函数中使用WindowStage的实例调用对应方法。

方法

方法 描述 api
getMainWindow 获取该WindowStage实例下的主窗口 9
getMainWindowAsync 获取该WindowStage实例下的主窗口, 同步方法 9
createSubWindow 创建该WindowStage实例下的子窗口 9
createSubWindowWithOptions 创建该WindowStage实例下的子窗口(可设置子窗口参数) 11
getSubWindow 获取该WindowStage实例下的所有子窗口 9
loadContent 加载指定页面 9
loadContentByNametent 根据命名路由的名字加载指定页面 11
setDefaultDensityEnabled 设置应用是否使用系统默认Density 12
setCustomDensity 支持应用主窗口自定义其显示大小缩放系数,子窗会跟随主窗生效 15
setWindowModal 设置主窗的模态属性是否启用 14
removeStartingWindow 支持应用控制启动页消失时机 14
setWindowRectAutoSave 设置是否启用最后关闭的主窗尺寸的记忆功能 14
setWindowRectAutoSave 设置是否启用最后关闭的主窗尺寸的记忆功能,仅对2in1设备生效 17
isWindowRectAutoSave 判断当前主窗口是否已经启用尺寸记忆,仅对2in1设备生效 14
setSupportedWindowModes 设置主窗的窗口支持模式,此接口仅支持2in1设备或平板设备的自由多窗模式 15

事件

事件 描述 api
windowStageEvent WindowStage生命周期变化事件 9
windowStageClose 点击主窗三键区的关闭按钮监听事件 14
相关推荐
二流小码农1 小时前
鸿蒙开发:资讯项目实战之项目框架设计
android·ios·harmonyos
君莫笑111112 小时前
鸿蒙最佳实践之组件动态创建
harmonyos
别说我什么都不会3 小时前
【OpenHarmony】鸿蒙360度的全景渲染:ThreeJs360Demo
harmonyos
Android研究员3 小时前
HarmonyOS实战:List拖拽位置交换的多种实现方式
android·ios·harmonyos
别说我什么都不会5 小时前
【OpenHarmony】 鸿蒙图片加载 ImageViewZoom
harmonyos
云_杰6 小时前
HarmonyOS——ArkTS高性能编程
性能优化·harmonyos
elon_z8 小时前
【项目实训#08】HarmonyOS知识图谱前端可视化实现
前端·echarts·知识图谱·harmonyos
Georgewu11 小时前
从“备胎”到领航者,鸿蒙操作系统的传奇进化
harmonyos