From e4fb352e727c250b193d547325cf961318943004 Mon Sep 17 00:00:00 2001 From: chyyy0213 Date: Sat, 12 Mar 2022 16:35:22 +0800 Subject: [PATCH 1/2] add window application-dev Signed-off-by: chyyy0213 Change-Id: I1e68cc32bae7bdf8c4f442012adeb8172e96a7d3 --- zh-cn/application-dev/Readme-CN.md | 5 +- .../windowmanager/Readme-CN.md | 4 +- .../windowmanager/window-guidelines.md | 109 ++++++++++++++++++ .../windowmanager/window-overview.md | 18 +++ 4 files changed, 132 insertions(+), 4 deletions(-) create mode 100644 zh-cn/application-dev/windowmanager/window-guidelines.md create mode 100644 zh-cn/application-dev/windowmanager/window-overview.md diff --git a/zh-cn/application-dev/Readme-CN.md b/zh-cn/application-dev/Readme-CN.md index 59d832ea674..161512be40a 100644 --- a/zh-cn/application-dev/Readme-CN.md +++ b/zh-cn/application-dev/Readme-CN.md @@ -21,14 +21,15 @@ - [数据管理](database/Readme-CN.md) - [USB服务](usb/Readme-CN.md) - [DFX](dfx/Readme-CN.md) + - [窗口管理](windowmanager/Readme-CN.md) - 工具 - [DevEco Studio(OpenHarmony)使用指南](quick-start/deveco-studio-user-guide-for-openharmony.md) - 示例教程 - [示例代码](https://gitee.com/openharmony/app_samples/blob/master/README_zh.md) - [Codelabs](https://gitee.com/openharmony/codelabs/blob/master/README.md) -- API参考 +- API参考 - [组件参考(基于JS扩展的类Web开发范式)](reference/arkui-js/Readme-CN.md) - [组件参考(基于TS扩展的声明式开发范式)](reference/arkui-ts/Readme-CN.md) - [接口参考](reference/apis/Readme-CN.md) - 贡献 - - [参与贡献](../contribute/贡献文档.md) \ No newline at end of file + - [参与贡献](../contribute/贡献文档.md) diff --git a/zh-cn/application-dev/windowmanager/Readme-CN.md b/zh-cn/application-dev/windowmanager/Readme-CN.md index 3fd97035351..2c417b95e54 100644 --- a/zh-cn/application-dev/windowmanager/Readme-CN.md +++ b/zh-cn/application-dev/windowmanager/Readme-CN.md @@ -1,8 +1,8 @@ # 窗口管理 * 窗口 - * 窗口开发概述 - * 窗口开发指导 + * [窗口开发概述](window-overview.md) + * [窗口开发指导](window-guidelines.md) * 显示设备 * [屏幕属性开发概述](display-overview.md) * [屏幕属性开发指导](display-guidelines.md) diff --git a/zh-cn/application-dev/windowmanager/window-guidelines.md b/zh-cn/application-dev/windowmanager/window-guidelines.md new file mode 100644 index 00000000000..d60e7b43134 --- /dev/null +++ b/zh-cn/application-dev/windowmanager/window-guidelines.md @@ -0,0 +1,109 @@ +# 窗口开发指导 + +# 场景介绍 +窗口的接口层在应用进程运行,负责对页面布局的加载,和提供应用程序接口。 +通过调用窗口接口可以实现窗口创建与销毁,窗口的位置、大小布局,以及进入沉浸式等。 + +## 接口说明 +窗口开放的能力如下:Window类,具体的API详见[接口文档](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis/js-apis-window.md)。 + +**表1** 窗口主要接口API + +| 接口名 | 描述 | +| :----------------------------------------------------------- | :--------------------------------------------- | +| create(id: string, type: WindowType, callback: AsyncCallback\): void | 创建子窗口。 | +| moveTo(x: number, y: number): Promise\ | 移动窗口位置,x值为正表示右移,y为正表示右移。 | +| resetSize(width: number, height: number): Promise\ | 改变当前窗口大小。 | +| hide(): Promise\ | 隐藏当前窗口。 | +| destroy(): Promise\ | 销毁当前窗口。 | + +## 开发步骤 + +### 创建主窗口 + +在当前模型下,应用启动时会自动创建主窗口,由应用管理窗口的声明周期,隐藏及销毁由应用管理。 +###创建子窗口 +当前可以通过`create`接口创建子窗口。具体示例代码如下: + +``` + import window from '@ohos.window'; + var windowClass = null; + let promise = window.create("subWindow", window.WindowType.TYPE_APP); + promise.then((data)=> { + windowClass = data; + console.info('SubWindow created. Data: ' + JSON.stringify(data)) + }).catch((err)=>{ + console.error('Failed to create the subWindow. Cause: ' + JSON.stringify(err)); + }); +``` + +### 获取窗口对象 + +- 应用内可以通过`getTopWindow`来获取当前应用内最后显示的窗口。具体示例代码如下: + +``` + var windowClass = null; + let promise = window.getTopWindow(); + promise.then((data)=> { + windowClass = data; + console.info('Succeeded in obtaining the top window. Data: ' + JSON.stringify(data)) + }).catch((err)=>{ + console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(err)); + }) +``` + +- 应用内也可以通过`Find`来获取已经创建的子窗口。具体示例代码如下: + +``` + var windowClass = null; + let promise = window.find("subWindow"); + promise.then((data)=> { + windowClass = data; + console.info('window found. Data: ' + JSON.stringify(data)) + }).catch((err)=>{ + console.error('Failed to find the Window. Cause: ' + JSON.stringify(err)); + }); +``` + +### 窗口的隐藏和销毁 + +在已经获取到窗口对象的前提下,可以调用`hide`、`destroy`来隐藏和销毁已经创建的窗口对象。具体示例代码如下: + +``` + let promise = windowClass.hide(); + promise.then((data)=> { + console.info('window hidden. Data: ' + JSON.stringify(data)) + windowClass.destroy((err, data) => { + if (err.code) { + console.error('Failed to destroy the window. Cause:' + JSON.stringify(err)); + return; + } + console.info('Succeeded in destroying the window. Data: ' + JSON.stringify(data)) + }) + }).catch((err)=>{ + console.error('Failed to hide the window. Cause: ' + JSON.stringify(err)); + }) +``` + +### 设置沉浸式窗口 + +在已经获取到应用窗口对象的前提下: + +- 调用`setFullScreen`来设置窗口进入全屏沉浸式。 + +示例代码如下: + +``` +import window from '@ohos.window'; +.onClick(async () => { + try { + const win = await window.getTopWindow() + await win.setFullScreen(true) + } catch (err) { + console.log(`setFullScreen fail, code = ${err.code}`) + } +}) +``` + +完整[示例工程](https://gitee.com/openharmony/windowmanager/tree/master/AppDemo/immersive)。 + diff --git a/zh-cn/application-dev/windowmanager/window-overview.md b/zh-cn/application-dev/windowmanager/window-overview.md new file mode 100644 index 00000000000..5fc7811424d --- /dev/null +++ b/zh-cn/application-dev/windowmanager/window-overview.md @@ -0,0 +1,18 @@ +# 窗口开发概述 + +**窗口子系统**提供窗口管理和Display管理的基础能力,是系统图形界面显示所需的基础子系统。 +窗口系统的作用,是提供一种机制,让多个应用界面复用同一块物理屏幕进行显示和交互。每个应用程序中,著需要实现被分配部分的显示区域内的交互界面,窗口作用应用界面的显示容器,而窗口系统负责将这些交互界面组织成最终用户见到的形态。 + +## 基本概念 + +**沉浸式** + +应用窗口跟状态栏与导航栏颜色一致,视觉上融合。 + +## 运作机制 + +为了将图形界面显示在屏幕上,应用和系统需要向窗口系统申请窗口对象,这通常代表了屏幕上一块矩形区域,具有位置、宽高、和叠加层次等属性。同时,窗口对象也负责加载界面中UI框架的根节点,应用程序的UI界面就通过这个根节点在窗口中加载显示。 + +## 约束与限制 + +window API提供的相关接口除回调注册`on`,注销`off`为同步接口外,其余全部为异步接口。 \ No newline at end of file -- Gitee From a83eaf3fa9a6ea93a3d291dd87941837bd89e525 Mon Sep 17 00:00:00 2001 From: chyyy0213 Date: Sat, 12 Mar 2022 18:41:15 +0800 Subject: [PATCH 2/2] add window application-dev Signed-off-by: chyyy0213 Change-Id: I86325d67b11342021f5a3139271908ee1c8180a0 --- zh-cn/application-dev/windowmanager/window-guidelines.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zh-cn/application-dev/windowmanager/window-guidelines.md b/zh-cn/application-dev/windowmanager/window-guidelines.md index d60e7b43134..0c4e6e252f4 100644 --- a/zh-cn/application-dev/windowmanager/window-guidelines.md +++ b/zh-cn/application-dev/windowmanager/window-guidelines.md @@ -105,5 +105,5 @@ import window from '@ohos.window'; }) ``` -完整[示例工程](https://gitee.com/openharmony/windowmanager/tree/master/AppDemo/immersive)。 +完整[示例工程](https://gitee.com/openharmony/windowmanager/tree/master/AppDemo/window/immersive)。 -- Gitee