Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
707a2e98
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
707a2e98
编写于
12月 09, 2022
作者:
O
openharmony_ci
提交者:
Gitee
12月 09, 2022
浏览文件
操作
浏览文件
下载
差异文件
!12320 monthly1018分支:windowmanager使用最新接口:需同步翻译
Merge pull request !12320 from 葛亚芳/monthly_20221018
上级
1eb781f3
f9d2066e
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
109 addition
and
139 deletion
+109
-139
zh-cn/application-dev/reference/apis/js-apis-window.md
zh-cn/application-dev/reference/apis/js-apis-window.md
+13
-15
zh-cn/application-dev/windowmanager/application-window-fa.md
zh-cn/application-dev/windowmanager/application-window-fa.md
+41
-61
zh-cn/application-dev/windowmanager/application-window-stage.md
...application-dev/windowmanager/application-window-stage.md
+40
-49
zh-cn/application-dev/windowmanager/system-window-stage.md
zh-cn/application-dev/windowmanager/system-window-stage.md
+15
-14
未找到文件。
zh-cn/application-dev/reference/apis/js-apis-window.md
浏览文件 @
707a2e98
...
...
@@ -46,17 +46,15 @@ import window from '@ohos.window';
## Configuration<sup>9+</sup>
创建子窗口时的参数。
当Context为
[
ServiceExtensionContext
](
js-apis-inner-application-serviceExtensionContext.md
)
时,创建系统窗口时,使用callback异步回调。
创建子窗口或系统窗口时的参数。
**系统能力:**
SystemCapability.WindowManager.WindowManager.Core
| 名称 | 类型 | 必填 | 说明 |
| ---------- | -------------------------- | -- | ----------------------------------- |
| name | string | 是 |
子
窗口名字。 |
| windowType |
[
WindowType
](
#windowtype7
)
| 是 |
子
窗口类型。 |
| ctx | BaseContext | 否 | 当前应用上下文信息。
<br>
FA模型的Context定义见
[
Context
](
js-apis-inner-app-context.md
)
。
<br>
Stage模型的Context定义见
[
Context
](
js-apis-inner-application-serviceExtensionContext.md
)
。不设置,则默认为空。
|
| name | string | 是 | 窗口名字。 |
| windowType |
[
WindowType
](
#windowtype7
)
| 是 | 窗口类型。 |
| ctx | BaseContext | 否 | 当前应用上下文信息。
<br>
FA模型的Context定义见
[
Context
](
js-apis-inner-app-context.md
)
。
<br>
Stage模型的Context定义见
[
ServiceExtensionContext
](
js-apis-inner-application-serviceExtensionContext.md
)
。不设置,则默认为空。
<br>
当Context为
[
ServiceExtensionContext
](
js-apis-inner-application-serviceExtensionContext.md
)
时,创建系统窗口。
|
| displayId | number | 否 | 当前物理屏幕id。不设置,则默认为-1。 |
| parentId | number | 否 | 父窗口id。不设置,则默认为-1。 |
...
...
@@ -302,7 +300,7 @@ import window from '@ohos.window';
createWindow(config: Configuration, callback: AsyncCallback
<
Window
>
): void
创建子窗口,使用callback异步回调。
创建子窗口
或者系统窗口
,使用callback异步回调。
**系统能力:**
SystemCapability.WindowManager.WindowManager.Core
...
...
@@ -310,8 +308,8 @@ createWindow(config: Configuration, callback: AsyncCallback<Window>): void
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------------------------------------- | -- | --------------------------------- |
| config |
[
Configuration
](
#configuration9
)
| 是 |
当前应用上下文信息。
|
| callback | AsyncCallback
<
[Window](#window)
>
| 是 | 回调函数。返回当前创建的
子
窗口对象。 |
| config |
[
Configuration
](
#configuration9
)
| 是 |
创建窗口时的参数。
|
| callback | AsyncCallback
<
[Window](#window)
>
| 是 | 回调函数。返回当前创建的窗口对象。 |
**错误码:**
...
...
@@ -346,7 +344,7 @@ try {
createWindow(config: Configuration): Promise
<
Window
>
创建子窗口,使用Promise异步回调。
创建子窗口
或者系统窗口
,使用Promise异步回调。
**系统能力:**
SystemCapability.WindowManager.WindowManager.Core
...
...
@@ -354,13 +352,13 @@ createWindow(config: Configuration): Promise<Window>
| 参数名 | 类型 | 必填 | 说明 |
| ------ | -------------------------------- | -- | ------------------ |
| config |
[
Configuration
](
#configuration9
)
| 是 |
当前应用上下文信息
。 |
| config |
[
Configuration
](
#configuration9
)
| 是 |
创建窗口时的参数
。 |
**返回值:**
| 类型 | 说明 |
| -------------------------------- | ------------------------------------ |
| Promise
<
[Window](#window)
>
| Promise对象。返回当前创建的
子
窗口对象。 |
| Promise
<
[Window](#window)
>
| Promise对象。返回当前创建的窗口对象。 |
**错误码:**
...
...
@@ -393,7 +391,7 @@ try {
findWindow(name: string): Window
查找
id
所对应的窗口。
查找
name
所对应的窗口。
**系统能力:**
SystemCapability.WindowManager.WindowManager.Core
...
...
@@ -913,7 +911,7 @@ create(ctx: BaseContext, id: string, type: WindowType, callback: AsyncCallback&l
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------------------------------------- | ---- | ------------------------------------------------------------ |
| ctx | BaseContext | 是 | 当前应用上下文信息。
<br>
FA模型的Context定义见
[
Context
](
js-apis-inner-app-context.md
)
。
<br>
Stage模型的Context定义见
[
Context
](
js-apis-inner-application-serviceExtensionContext.md
)
。 |
| ctx | BaseContext | 是 | 当前应用上下文信息。
<br>
FA模型的Context定义见
[
Context
](
js-apis-inner-app-context.md
)
。
<br>
Stage模型的Context定义见
[
ServiceExtension
Context
](
js-apis-inner-application-serviceExtensionContext.md
)
。 |
| id | string | 是 | 窗口id。 |
| type |
[
WindowType
](
#windowtype7
)
| 是 | 窗口类型。 |
| callback | AsyncCallback
<
[Window](#window)
>
| 是 | 回调函数。返回当前创建的子窗口对象。 |
...
...
@@ -951,7 +949,7 @@ create(ctx: BaseContext, id: string, type: WindowType): Promise<Window>
| 参数名 | 类型 | 必填 | 说明 |
| ------ | ------------------------- | ---- | ------------------------------------------------------------ |
| ctx | BaseContext | 是 | 当前应用上下文信息。
<br/>
FA模型的Context定义见
[
Context
](
js-apis-inner-app-context.md
)
。
<br/>
Stage模型的Context定义见
[
Context
](
js-apis-inner-application-serviceExtensionContext.md
)
。 |
| ctx | BaseContext | 是 | 当前应用上下文信息。
<br/>
FA模型的Context定义见
[
Context
](
js-apis-inner-app-context.md
)
。
<br/>
Stage模型的Context定义见
[
ServiceExtension
Context
](
js-apis-inner-application-serviceExtensionContext.md
)
。 |
| id | string | 是 | 窗口id。 |
| type |
[
WindowType
](
#windowtype7
)
| 是 | 窗口类型。 |
...
...
zh-cn/application-dev/windowmanager/application-window-fa.md
浏览文件 @
707a2e98
...
...
@@ -22,21 +22,19 @@
| 实例名 | 接口名 | 描述 |
| -------- | -------- | -------- |
| window静态方法 | create(id: string, type: WindowType, callback: AsyncCallback
<
Window
>
): void | 创建子窗口。
<br>
此接口仅可在
`FA`
模型下使用。 |
| window静态方法 | getTopWindow(callback: AsyncCallback
<
Window
>
): void | 获取当前应用内最后显示的窗口。
<br/>
此接口仅可在
`FA`
模型下使用。 |
| window静态方法 | find(id: string, callback: AsyncCallback
<
Window
>
): void | 查找
`id`
所对应的窗口。 |
| Window | loadContent(path: string, callback: AsyncCallback
<
void
>
): void | 为当前窗口加载具体页面内容。 |
| Window | moveTo(x: number, y: number, callback: AsyncCallback
<
void
>
): void | 移动当前窗口。 |
| Window | setBackgroundColor(color: string, callback: AsyncCallback
<
void
>
): void | 设置窗口的背景色。 |
| Window | setBrightness(brightness: number, callback: AsyncCallback
<
void
>
): void | 设置屏幕亮度值。 |
| Window | resetSize(width: number, height: number, callback: AsyncCallback
<
void
>
): void | 改变当前窗口大小。 |
| Window | setFullScreen(isFullScreen: boolean, callback: AsyncCallback
<
void
>
): void | 设置窗口是否全屏显示。 |
| Window | setLayoutFullScreen(isLayoutFullScreen: boolean, callback: AsyncCallback
<
void
>
): void | 设置窗口布局是否为全屏布局。 |
| Window | setSystemBarEnable(names: Array
<
'status'\|'navigation'
>
): Promise
<
void
>
| 设置导航栏、状态栏是否显示。 |
| Window | setSystemBarProperties(systemBarProperties: SystemBarProperties, callback: AsyncCallback
<
void
>
): void | 设置窗口内导航栏、状态栏属性。
<br/>
`systemBarProperties`
:导航栏、状态栏的属性集合。 |
| Window | show(callback: AsyncCallback
\<
void>): void | 显示当前窗口。 |
| window静态方法 | createWindow(config: Configuration, callback: AsyncCallback
<Window>
): void | 创建子窗口。
<br/>
-
`config`
:创建窗口时的参数。 |
| window静态方法 | findWindow(id: string, callback: AsyncCallback
<
Window
>
): void | 查找
`id`
所对应的窗口。 |
| Window | SetUIContent(path: string, callback: AsyncCallback
<
void
>
): void | 为当前窗口加载具体页面内容。 |
| Window | moveWindowTo(x: number, y: number, callback: AsyncCallback
<
void
>
): void | 移动当前窗口。 |
| Window | setWindowBackgroundColor(color: string, callback: AsyncCallback
<
void
>
): void | 设置窗口的背景色。 |
| Window | setWindowBrightness(brightness: number, callback: AsyncCallback
<
void
>
): void | 设置屏幕亮度值。 |
| Window | resize(width: number, height: number, callback: AsyncCallback
<
void
>
): void | 改变当前窗口大小。 |
| Window | setWindowLayoutFullScreen(isLayoutFullScreen: boolean, callback: AsyncCallback
<
void
>
): void | 设置窗口布局是否为全屏布局。 |
| Window | setWindowSystemBarEnable(names: Array
<
'status'\|'navigation'
>
): Promise
<
void
>
| 设置导航栏、状态栏是否显示。 |
| Window | setWindowSystemBarProperties(systemBarProperties: SystemBarProperties, callback: AsyncCallback
<
void
>
): void | 设置窗口内导航栏、状态栏属性。
<br/>
`systemBarProperties`
:导航栏、状态栏的属性集合。 |
| Window | showWindow(callback: AsyncCallback
\<
void>): void | 显示当前窗口。 |
| Window | on(type: 'touchOutside', callback: Callback
<
void
>
): void | 开启本窗口区域外的点击事件的监听。 |
| Window | destroy(callback: AsyncCallback
<
void
>
): void | 销毁当前窗口。 |
| Window | destroy
Window
(callback: AsyncCallback
<
void
>
): void | 销毁当前窗口。 |
## 设置应用子窗口
...
...
@@ -48,16 +46,16 @@
1.
创建/获取子窗口对象。
-
可以通过
`window.create`
接口创建子窗口。
-
可以通过
`window.getTopWindow`
来获取最后显示的窗口得到子窗口。
-
也可以通过
`window.find`
接口来查找已经创建的窗口从而得到子窗口。
```
js
-
可以通过
`window.createWindow`
接口创建子窗口。
-
也可以通过
`window.findWindow`
接口来查找已经创建的窗口从而得到子窗口。
```
js
import
window
from
'
@ohos.window
'
;
let
windowClass
=
null
;
// 方式一:创建子窗口。
window
.
create
(
"
subWindow
"
,
window
.
WindowType
.
TYPE_APP
,
(
err
,
data
)
=>
{
let
config
=
{
name
:
"
subWindow
"
,
windowType
:
window
.
WindowType
.
TYPE_APP
,
ctx
:
this
.
context
};
window
.
createWindow
(
config
,
(
err
,
data
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to create the subWindow. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -65,17 +63,8 @@
console
.
info
(
'
Succeeded in creating subWindow. Data:
'
+
JSON
.
stringify
(
data
));
windowClass
=
data
;
});
// 方式二:获取子窗口。
window
.
getTopWindow
((
err
,
data
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to get the subWindow. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
}
console
.
info
(
'
Succeeded in getting subWindow. Data:
'
+
JSON
.
stringify
(
data
));
windowClass
=
data
;
});
// 方式三:查找得到子窗口。
window
.
find
(
"
subWindow
"
,
(
err
,
data
)
=>
{
// 方式二:查找得到子窗口。
window
.
findWindow
(
"
subWindow
"
,
(
err
,
data
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to find the subWindow. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -91,7 +80,7 @@
```
js
// 移动子窗口位置。
windowClass
.
moveTo
(
300
,
300
,
(
err
)
=>
{
windowClass
.
move
Window
To
(
300
,
300
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to move the window. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -99,7 +88,7 @@
console
.
info
(
'
Succeeded in moving the window.
'
);
});
// 改变子窗口大小。
windowClass
.
res
etSize
(
500
,
10
00
,
(
err
)
=>
{
windowClass
.
res
ize
(
500
,
5
00
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to change the window size. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -110,18 +99,18 @@
3.
加载显示子窗口的具体内容。
使用
`
loadContent`
和
`sh
ow`
接口加载显示子窗口的具体内容。
使用
`
SetUIContent`
和
`showWind
ow`
接口加载显示子窗口的具体内容。
```
js
// 为子窗口加载对应的目标页面。
windowClass
.
load
Content
(
"
pages/page2
"
,
(
err
)
=>
{
windowClass
.
SetUI
Content
(
"
pages/page2
"
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to load the content. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
}
console
.
info
(
'
Succeeded in loading the content.
'
);
// 显示子窗口。
windowClass
.
show
((
err
)
=>
{
windowClass
.
show
Window
((
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to show the window. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -133,11 +122,11 @@
4.
销毁子窗口。
当不再需要某些子窗口时,可根据场景的具体实现逻辑,使用
`destroy`
接口销毁子窗口。
当不再需要某些子窗口时,可根据场景的具体实现逻辑,使用
`destroy
Window
`
接口销毁子窗口。
```
js
// 销毁子窗口。当不再需要某些子窗口时,可根据场景的具体实现逻辑,使用destroy接口销毁子窗口。
windowClass
.
destroy
((
err
)
=>
{
windowClass
.
destroy
Window
((
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to destroy the subwindow. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -160,14 +149,14 @@
>
> 沉浸式能力需要在成功获取应用主窗口对象的前提下进行。
>
> 确保应用内最后显示的窗口为主窗口,然后再使用`window.get
Top
Window`接口来获取得到主窗口。
> 确保应用内最后显示的窗口为主窗口,然后再使用`window.get
Last
Window`接口来获取得到主窗口。
```
js
import
window
from
'
@ohos.window
'
;
let
mainWindowClass
=
null
;
// 获取主窗口。
window
.
get
Top
Window
((
err
,
data
)
=>
{
window
.
get
Last
Window
((
err
,
data
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to get the subWindow. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -179,23 +168,14 @@
2.
实现沉浸式效果。有以下三种方式:
-
方式一:调用
`setFullScreen`
接口,设置应用主窗口为全屏显示,此时导航栏、状态栏将隐藏,从而达到沉浸式效果。
-
方式二:调用
`setSystemBarEnable`
接口,设置导航栏、状态栏不显示,从而达到沉浸式效果。
-
方式三:调用
`setLayoutFullScreen`
接口,设置应用主窗口为全屏布局;然后调用
`setSystemProperties`
接口,设置导航栏、状态栏的透明度、背景/文字颜色以及高亮图标等属性,使之保持与主窗口显示协调一致,从而达到沉浸式效果。
-
方式一:调用
`setWindowSystemBarEnable`
接口,设置导航栏、状态栏不显示,从而达到沉浸式效果。
-
方式二:调用
`setWindowLayoutFullScreen`
接口,设置应用主窗口为全屏布局;然后调用
`setSystemProperties`
接口,设置导航栏、状态栏的透明度、背景/文字颜色以及高亮图标等属性,使之保持与主窗口显示协调一致,从而达到沉浸式效果。
```
js
// 实现沉浸式效果。方式一:设置窗口全屏显示。
let
isFullScreen
=
true
;
mainWindowClass
.
setFullScreen
(
isFullScreen
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to enable the full-screen mode. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
}
console
.
info
(
'
Succeeded in enabling the full-screen mode.
'
);
});
// 实现沉浸式效果。方式二:设置导航栏、状态栏不显示。
// 实现沉浸式效果。方式一:设置导航栏、状态栏不显示。
let
names
=
[];
mainWindowClass
.
setSystemBarEnable
(
names
,
(
err
)
=>
{
mainWindowClass
.
set
Window
SystemBarEnable
(
names
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to set the system bar to be visible. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -203,9 +183,9 @@
console
.
info
(
'
Succeeded in setting the system bar to be visible.
'
);
});
// 实现沉浸式效果。
// 方式
三
:设置窗口为全屏布局,配合设置状态栏、导航栏的透明度、背景/文字颜色及高亮图标等属性,与主窗口显示保持协调一致。
// 方式
二
:设置窗口为全屏布局,配合设置状态栏、导航栏的透明度、背景/文字颜色及高亮图标等属性,与主窗口显示保持协调一致。
let
isLayoutFullScreen
=
true
;
mainWindowClass
.
setLayoutFullScreen
(
isLayoutFullScreen
,
(
err
)
=>
{
mainWindowClass
.
set
Window
LayoutFullScreen
(
isLayoutFullScreen
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to set the window layout to full-screen mode. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -219,7 +199,7 @@
statusBarContentColor
:
'
#ffffff
'
,
navigationBarContentColor
:
'
#ffffff
'
};
mainWindowClass
.
setSystemBarProperties
(
sysBarProps
,
(
err
)
=>
{
mainWindowClass
.
set
Window
SystemBarProperties
(
sysBarProps
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to set the system bar properties. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -227,21 +207,21 @@
console
.
info
(
'
Succeeded in setting the system bar properties.
'
);
});
```
3.
加载显示沉浸式窗口的具体内容。
使用
`
loadContent`
和
`sh
ow`
接口加载显示沉浸式窗口的具体内容。
使用
`
SetUIContent`
和
`showWind
ow`
接口加载显示沉浸式窗口的具体内容。
```
js
// 为沉浸式窗口加载对应的目标页面。
mainWindowClass
.
load
Content
(
"
pages/page3
"
,
(
err
)
=>
{
mainWindowClass
.
SetUI
Content
(
"
pages/page3
"
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to load the content. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
}
console
.
info
(
'
Succeeded in loading the content.
'
);
// 显示沉浸式窗口。
mainWindowClass
.
show
((
err
)
=>
{
mainWindowClass
.
show
Window
((
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to show the window. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
zh-cn/application-dev/windowmanager/application-window-stage.md
浏览文件 @
707a2e98
...
...
@@ -34,25 +34,24 @@
| WindowStage | getMainWindow(callback: AsyncCallback
<
Window
>
): void | 获取
`WindowStage`
实例下的主窗口。
<br/>
此接口仅可在
`Stage`
模型下使用。 |
| WindowStage | loadContent(path: string, callback: AsyncCallback
<
void
>
): void | 为当前
`WindowStage`
的主窗口加载具体页面。
<br/>
此接口仅可在
`Stage`
模型下使用。 |
| WindowStage | createSubWindow(name: string, callback: AsyncCallback
<
Window
>
): void | 创建子窗口。
<br/>
此接口仅可在
`Stage`
模型下使用。 |
| window静态方法 | create(ctx: Context, id: string, type: WindowType, callback: AsyncCallback
<
Window
>
): void | 创建子窗口。
<br/>
-
`ctx`
:为应用上下文信息。
<br/>
-
`type`
:为创建的窗口类型。 |
| Window | loadContent(path: string, callback: AsyncCallback
<
void
>
): void | 为当前窗口加载具体页面。 |
| Window | setBackgroundColor(color: string, callback: AsyncCallback
<
void
>
): void | 设置窗口的背景色。 |
| Window | setBrightness(brightness: number, callback: AsyncCallback
<
void
>
): void | 设置屏幕亮度值。 |
| Window | setTouchable(isTouchable: boolean, callback: AsyncCallback
<
void
>
): void | 设置窗口是否为可触状态。 |
| Window | moveTo(x: number, y: number, callback: AsyncCallback
<
void
>
): void | 移动当前窗口位置。 |
| Window | resetSize(width: number, height: number, callback: AsyncCallback
<
void
>
): void | 改变当前窗口大小。 |
| Window | setFullScreen(isFullScreen: boolean, callback: AsyncCallback
<
void
>
): void | 设置窗口是否全屏显示。 |
| Window | setLayoutFullScreen(isLayoutFullScreen: boolean, callback: AsyncCallback
<
void
>
): void | 设置窗口布局是否为全屏布局。 |
| Window | setSystemBarEnable(names: Array
<
'status'\|'navigation'
>
): Promise
<
void
>
| 设置导航栏、状态栏是否显示。 |
| Window | setSystemBarProperties(systemBarProperties: SystemBarProperties, callback: AsyncCallback
<
void
>
): void | 设置窗口内导航栏、状态栏属性。
<br/>
`systemBarProperties`
:导航栏、状态栏的属性集合。 |
| Window | show(callback: AsyncCallback
\<
void>): void | 显示当前窗口。 |
| window静态方法 | createWindow(config: Configuration, callback: AsyncCallback
<Window>
): void | 创建系统窗口。
<br/>
-
`config`
:创建窗口时的参数。 |
| Window | setUIContent(path: string, callback: AsyncCallback
<
void
>
): void | 为当前窗口加载具体页面。 |
| Window | setWindowBackgroundColor(color: string, callback: AsyncCallback
<
void
>
): void | 设置窗口的背景色。 |
| Window | setWindowBrightness(brightness: number, callback: AsyncCallback
<
void
>
): void | 设置屏幕亮度值。 |
| Window | setWindowTouchable(isTouchable: boolean, callback: AsyncCallback
<
void
>
): void | 设置窗口是否为可触状态。 |
| Window | moveWindowTo(x: number, y: number, callback: AsyncCallback
<
void
>
): void | 移动当前窗口位置。 |
| Window | resize(width: number, height: number, callback: AsyncCallback
<
void
>
): void | 改变当前窗口大小。 |
| Window | setWindowLayoutFullScreen(isLayoutFullScreen: boolean, callback: AsyncCallback
<
void
>
): void | 设置窗口布局是否为全屏布局。 |
| Window | setWindowSystemBarEnable(names: Array
<
'status'\|'navigation'
>
): Promise
<
void
>
| 设置导航栏、状态栏是否显示。 |
| Window | setWindowSystemBarProperties(systemBarProperties: SystemBarProperties, callback: AsyncCallback
<
void
>
): void | 设置窗口内导航栏、状态栏属性。
<br/>
`systemBarProperties`
:导航栏、状态栏的属性集合。 |
| Window | showWindow(callback: AsyncCallback
\<
void>): void | 显示当前窗口。 |
| Window | on(type: 'touchOutside', callback: Callback
<
void
>
): void | 开启本窗口区域外的点击事件的监听。 |
| Window | destroy(callback: AsyncCallback
<
void
>
): void | 销毁当前窗口。 |
| Window | destroy
Window
(callback: AsyncCallback
<
void
>
): void | 销毁当前窗口。 |
## 设置应用主窗口
在
`Stage`
模型下,应用主窗口由
`Ability`
创建并维护生命周期。在
`Ability`
的
`onWindowStageCreate`
回调中,通过
`WindowStage`
获取应用主窗口,即可对其进行属性设置等操作
在
`Stage`
模型下,应用主窗口由
`Ability`
创建并维护生命周期。在
`Ability`
的
`onWindowStageCreate`
回调中,通过
`WindowStage`
获取应用主窗口,即可对其进行属性设置等操作
。
### 开发步骤
...
...
@@ -82,7 +81,7 @@ class MainAbility extends Ability {
console
.
info
(
'
Succeeded in obtaining the main window. Data:
'
+
JSON
.
stringify
(
data
));
// 2.设置主窗口属性。以设置"是否可触"属性为例。
let
isTouchable
=
true
;
windowClass
.
setTouchable
(
isTouchable
,
(
err
)
=>
{
windowClass
.
set
Window
Touchable
(
isTouchable
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to set the window to be touchable. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -117,10 +116,10 @@ class MainAbility extends Ability {
子窗口创建成功后,可以改变其大小、位置等,还可以根据应用需要设置窗口背景色、亮度等属性。
3.
加载显示子窗口的具体内容。
通过
`
loadContent`
和
`sh
ow`
接口加载显示子窗口的具体内容。
通过
`
setUIContent`
和
`showWind
ow`
接口加载显示子窗口的具体内容。
4.
销毁子窗口。
当不再需要某些子窗口时,可根据具体实现逻辑,使用
`destroy`
接口销毁子窗口。
当不再需要某些子窗口时,可根据具体实现逻辑,使用
`destroy
Window
`
接口销毁子窗口。
```
ts
import
Ability
from
'
@ohos.application.Ability
'
...
...
@@ -138,14 +137,14 @@ class MainAbility extends Ability {
sub_windowClass
=
data
;
console
.
info
(
'
Succeeded in creating the subwindow. Data:
'
+
JSON
.
stringify
(
data
));
// 2.子窗口创建成功后,设置子窗口的位置、大小及相关属性等。
sub_windowClass
.
moveTo
(
300
,
300
,
(
err
)
=>
{
sub_windowClass
.
move
Window
To
(
300
,
300
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to move the window. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
}
console
.
info
(
'
Succeeded in moving the window.
'
);
});
sub_windowClass
.
res
etSize
(
500
,
10
00
,
(
err
)
=>
{
sub_windowClass
.
res
ize
(
500
,
5
00
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to change the window size. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -153,14 +152,14 @@ class MainAbility extends Ability {
console
.
info
(
'
Succeeded in changing the window size.
'
);
});
// 3.为子窗口加载对应的目标页面。
sub_windowClass
.
load
Content
(
"
pages/page3
"
,
(
err
)
=>
{
sub_windowClass
.
setUI
Content
(
"
pages/page3
"
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to load the content. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
}
console
.
info
(
'
Succeeded in loading the content.
'
);
// 3.显示子窗口。
sub_windowClass
.
show
((
err
)
=>
{
sub_windowClass
.
show
Window
((
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to show the window. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -173,7 +172,7 @@ class MainAbility extends Ability {
destroySubWindow
()
{
// 4.销毁子窗口。当不再需要子窗口时,可根据具体实现逻辑,使用destroy对其进行销毁。
sub_windowClass
.
destroy
((
err
)
=>
{
sub_windowClass
.
destroy
Window
((
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to destroy the window. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -207,9 +206,8 @@ class MainAbility extends Ability {
通过
`getMainWindow`
接口获取应用主窗口。
2.
实现沉浸式效果。有以下三种方式:
-
方式一:调用
`setFullScreen`
接口,设置应用主窗口为全屏显示,此时导航栏、状态栏将隐藏,从而达到沉浸式效果。
-
方式二:调用
`setSystemBarEnable`
接口,设置导航栏、状态栏不显示,从而达到沉浸式效果。
-
方式三:调用
`setLayoutFullScreen`
接口,设置应用主窗口为全屏布局;然后调用
`setSystemProperties`
接口,设置导航栏、状态栏的透明度、背景/文字颜色以及高亮图标等属性,使之保持与主窗口显示协调一致,从而达到沉浸式效果。
-
方式一:调用
`setWindowSystemBarEnable`
接口,设置导航栏、状态栏不显示,从而达到沉浸式效果。
-
方式二:调用
`setWindowLayoutFullScreen`
接口,设置应用主窗口为全屏布局;然后调用
`setWindowSystemBarProperties`
接口,设置导航栏、状态栏的透明度、背景/文字颜色以及高亮图标等属性,使之保持与主窗口显示协调一致,从而达到沉浸式效果。
3.
加载显示沉浸式窗口的具体内容。
通过
`loadContent`
接口加载沉浸式窗口的具体内容。
...
...
@@ -229,27 +227,18 @@ class MainAbility extends Ability {
windowClass
=
data
;
console
.
info
(
'
Succeeded in obtaining the main window. Data:
'
+
JSON
.
stringify
(
data
));
// 2.实现沉浸式效果。方式一:设置应用主窗口为全屏显示。
let
isFullScreen
=
true
;
windowClass
.
setFullScreen
(
isFullScreen
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to enable the full-screen mode. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
}
console
.
info
(
'
Succeeded in enabling the full-screen mode.
'
);
});
// 2.实现沉浸式效果。方式二:设置导航栏、状态栏不显示。
// 2.实现沉浸式效果。方式一:设置导航栏、状态栏不显示。
let
names
=
[];
windowClass
.
setSystemBarEnable
(
names
,
(
err
)
=>
{
windowClass
.
set
Window
SystemBarEnable
(
names
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to set the system bar to be visible. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
}
console
.
info
(
'
Succeeded in setting the system bar to be visible.
'
);
});
// 2.实现沉浸式效果。方式
三
:设置窗口为全屏布局,配合设置导航栏、状态栏的透明度、背景/文字颜色及高亮图标等属性,与主窗口显示保持协调一致。
// 2.实现沉浸式效果。方式
二
:设置窗口为全屏布局,配合设置导航栏、状态栏的透明度、背景/文字颜色及高亮图标等属性,与主窗口显示保持协调一致。
let
isLayoutFullScreen
=
true
;
windowClass
.
setLayoutFullScreen
(
isLayoutFullScreen
,
(
err
)
=>
{
windowClass
.
set
Window
LayoutFullScreen
(
isLayoutFullScreen
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to set the window layout to full-screen mode. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -263,7 +252,7 @@ class MainAbility extends Ability {
statusBarContentColor
:
'
#ffffff
'
,
navigationBarContentColor
:
'
#ffffff
'
};
windowClass
.
setSystemBarProperties
(
sysBarProps
,
(
err
)
=>
{
windowClass
.
set
Window
SystemBarProperties
(
sysBarProps
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to set the system bar properties. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -292,9 +281,10 @@ class MainAbility extends Ability {
### 开发步骤
1.
申请权限。
创建
`WindowType.TYPE_FLOAT`
即悬浮窗类型的窗口,需要在
`module.json5`
文件的
`requestPermissions`
对象中配置
`ohos.permission.SYSTEM_FLOAT_WINDOW`
权限。更多配置信息详见
[
Stage模型应用程序包结构
](
../quick-start/application-package-structure-stag
e.md
)
。
创建
`WindowType.TYPE_FLOAT`
即悬浮窗类型的窗口,需要在
`module.json5`
文件的
`requestPermissions`
对象中配置
`ohos.permission.SYSTEM_FLOAT_WINDOW`
权限。更多配置信息详见
[
module.json5配置文件
](
../quick-start/module-configuration-fil
e.md
)
。
> **说明:**
>
> 虽然悬浮窗具备始终在前台显示的能力,但如果创建悬浮窗的应用任务被系统回收,仍然会导致悬浮窗从界面移除。如果想要保持悬浮窗口始终在前台显示,请申请[长时任务](../task-management/background-task-overview.md)。
```
json
...
...
@@ -316,17 +306,17 @@ class MainAbility extends Ability {
```
2.
创建悬浮窗。
通过
`window.create`
接口创建悬浮窗类型的窗口。
通过
`window.create
Window
`
接口创建悬浮窗类型的窗口。
3.
对悬浮窗进行属性设置等操作。
悬浮窗窗口创建成功后,可以改变其大小、位置等,还可以根据应用需要设置悬浮窗背景色、亮度等属性。
4.
加载显示悬浮窗的具体内容。
通过
`
loadContent`
和
`sh
ow`
接口加载显示悬浮窗的具体内容。
通过
`
setUIContent`
和
`showWind
ow`
接口加载显示悬浮窗的具体内容。
5.
销毁悬浮窗。
当不再需要悬浮窗时,可根据具体实现逻辑,使用
`destroy`
接口销毁悬浮窗。
当不再需要悬浮窗时,可根据具体实现逻辑,使用
`destroy
Window
`
接口销毁悬浮窗。
```
ts
import
Ability
from
'
@ohos.application.Ability
'
...
...
@@ -337,7 +327,8 @@ class MainAbility extends Ability {
onWindowStageCreate
(
windowStage
)
{
// 2. 创建悬浮窗。
let
windowClass
=
null
;
window
.
create
(
this
.
context
,
"
floatWindow
"
,
window
.
WindowType
.
TYPE_FLOAT
,
(
err
,
data
)
=>
{
let
config
=
{
name
:
"
floatWindow
"
,
windowType
:
window
.
WindowType
.
TYPE_FLOAT
,
ctx
:
this
.
context
};
window
.
createWindow
(
config
,
(
err
,
data
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to create the floatWindow. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -345,14 +336,14 @@ class MainAbility extends Ability {
console
.
info
(
'
Succeeded in creating the floatWindow. Data:
'
+
JSON
.
stringify
(
data
));
windowClass
=
data
;
// 3.悬浮窗窗口创建成功后,设置悬浮窗的位置、大小及相关属性等。
windowClass
.
moveTo
(
300
,
300
,
(
err
)
=>
{
windowClass
.
move
Window
To
(
300
,
300
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to move the window. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
}
console
.
info
(
'
Succeeded in moving the window.
'
);
});
windowClass
.
res
etSize
(
500
,
10
00
,
(
err
)
=>
{
windowClass
.
res
ize
(
500
,
5
00
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to change the window size. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -360,14 +351,14 @@ class MainAbility extends Ability {
console
.
info
(
'
Succeeded in changing the window size.
'
);
});
// 4.为悬浮窗加载对应的目标页面。
windowClass
.
load
Content
(
"
pages/page4
"
,
(
err
)
=>
{
windowClass
.
setUI
Content
(
"
pages/page4
"
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to load the content. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
}
console
.
info
(
'
Succeeded in loading the content.
'
);
// 4.显示悬浮窗。
windowClass
.
show
((
err
)
=>
{
windowClass
.
show
Window
((
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to show the window. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -376,7 +367,7 @@ class MainAbility extends Ability {
});
});
//5.销毁悬浮窗。当不再需要悬浮窗时,可根据具体实现逻辑,使用destroy对其进行销毁。
windowClass
.
destroy
((
err
)
=>
{
windowClass
.
destroy
Window
((
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to destroy the window. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
zh-cn/application-dev/windowmanager/system-window-stage.md
浏览文件 @
707a2e98
...
...
@@ -15,14 +15,14 @@
| 实例名 | 接口名 | 描述 |
| -------- | -------- | -------- |
| window静态方法 | create
(ctx: Context, id: string, type: WindowType, callback: AsyncCallback
<
Window
>
): void | 创建窗口。
<br/>
-
`ctx`
:为应用上下文信息。当
`Context`
为
[
ServiceExtensionContext
](
../reference/apis/js-apis-inner-application-serviceExtensionContext.md
)
时,创建系统窗口。
<br/>
-
`type`
:为创建的窗口类型
。 |
| Window | res
etS
ize(width: number, height: number, callback: AsyncCallback
<
void
>
): void | 改变当前窗口大小。 |
| Window | moveTo(x: number, y: number, callback: AsyncCallback
<
void
>
): void | 移动当前窗口位置。 |
| Window |
load
Content(path: string, callback: AsyncCallback
<
void
>
): void | 为当前窗口加载具体页面。 |
| Window | show(callback: AsyncCallback
\<
void>): void | 显示当前窗口。 |
| window静态方法 | create
Window(config: Configuration, callback: AsyncCallback
<Window>
): void | 创建子窗口或系统窗口。
<br/>
-
`config`
:创建窗口时的参数
。 |
| Window | resize(width: number, height: number, callback: AsyncCallback
<
void
>
): void | 改变当前窗口大小。 |
| Window | move
Window
To(x: number, y: number, callback: AsyncCallback
<
void
>
): void | 移动当前窗口位置。 |
| Window |
SetUI
Content(path: string, callback: AsyncCallback
<
void
>
): void | 为当前窗口加载具体页面。 |
| Window | show
Window
(callback: AsyncCallback
\<
void>): void | 显示当前窗口。 |
| Window | on(type: 'touchOutside', callback: Callback
<
void
>
): void | 开启本窗口区域外的点击事件的监听。 |
| Window | hide (callback: AsyncCallback
\<
void>): void | 隐藏当前窗口。此接口为系统接口。 |
| Window | destroy(callback: AsyncCallback
<
void
>
): void | 销毁当前窗口。 |
| Window | destroy
Window
(callback: AsyncCallback
<
void
>
): void | 销毁当前窗口。 |
## 开发步骤
...
...
@@ -33,7 +33,7 @@
1.
创建系统窗口。
在
[
ServiceExtensionContext
](
../reference/apis/js-apis-inner-application-serviceExtensionContext.md
)
下,使用
`window.create`
接口创建音量条系统窗口。
在
[
ServiceExtensionContext
](
../reference/apis/js-apis-inner-application-serviceExtensionContext.md
)
下,使用
`window.create
Window
`
接口创建音量条系统窗口。
2.
操作或设置系统窗口的属性。
...
...
@@ -41,11 +41,11 @@
3.
加载显示系统窗口的具体内容。
通过
`
loadContent`
和
`sh
ow`
接口加载显示音量条窗口的具体内容。
通过
`
SetUIContent`
和
`showWind
ow`
接口加载显示音量条窗口的具体内容。
4.
隐藏/销毁系统窗口。
当不再需要音量条窗口时,可根据具体实现逻辑,使用
`hide`
接口或
`destroy`
接口对其进行隐藏或销毁。
当不再需要音量条窗口时,可根据具体实现逻辑,使用
`hide`
接口或
`destroy
Window
`
接口对其进行隐藏或销毁。
```
ts
import
ExtensionContext
from
'
@ohos.application.ServiceExtensionAbility
'
;
...
...
@@ -57,7 +57,8 @@ export default class ServiceExtensionAbility1 extends ExtensionContext {
globalThis
.
abilityWant
=
want
;
// 1.创建音量条窗口。
let
windowClass
=
null
;
window
.
create
(
this
.
context
,
"
volume
"
,
window
.
WindowType
.
TYPE_VOLUME_OVERLAY
,
(
err
,
data
)
=>
{
let
config
=
{
name
:
"
volume
"
,
windowType
:
window
.
WindowType
.
TYPE_VOLUME_OVERLAY
,
ctx
:
this
.
context
};
window
.
createWindow
(
config
,
(
err
,
data
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to create the volume window. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -65,14 +66,14 @@ export default class ServiceExtensionAbility1 extends ExtensionContext {
console
.
info
(
'
Succeeded in creating the volume window.
'
)
windowClass
=
data
;
// 2.创建音量条窗口成功之后,可以改变其大小、位置或设置背景色、亮度等属性。
windowClass
.
moveTo
(
300
,
300
,
(
err
)
=>
{
windowClass
.
move
Window
To
(
300
,
300
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to move the window. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
}
console
.
info
(
'
Succeeded in moving the window.
'
);
});
windowClass
.
res
etSize
(
500
,
10
00
,
(
err
)
=>
{
windowClass
.
res
ize
(
500
,
5
00
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to change the window size. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
@@ -80,14 +81,14 @@ export default class ServiceExtensionAbility1 extends ExtensionContext {
console
.
info
(
'
Succeeded in changing the window size.
'
);
});
// 3.为音量条窗口加载对应的目标页面。
windowClass
.
load
Content
(
"
pages/page_volume
"
,
(
err
)
=>
{
windowClass
.
setUI
Content
(
"
pages/page_volume
"
,
(
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to load the content. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
}
console
.
info
(
'
Succeeded in loading the content.
'
);
// 3.显示音量条窗口。
windowClass
.
show
((
err
)
=>
{
windowClass
.
show
Window
((
err
)
=>
{
if
(
err
.
code
)
{
console
.
error
(
'
Failed to show the window. Cause:
'
+
JSON
.
stringify
(
err
));
return
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录