赞
踩
窗口模块用于在同一物理屏幕上,提供多个应用界面显示、交互的机制。
OpenHarmony 将窗口分为系统窗口和应用窗口两种类型:
系统窗口:
系统窗口指完成系统特定功能的窗口。如音量条、壁纸、通知栏、状态栏、导航栏等。
应用窗口:
应用窗口区别于系统窗口,指与应用显示相关的窗口。根据显示内容的不同,应用窗口又分为应用主窗口、应用子窗口两种类型。
应用主窗口:
应用主窗口用于显示应用界面,会在“任务管理界面”显示。
应用子窗口:
应用子窗口用于显示应用内的弹窗、悬浮窗等辅助窗口,不会在“任务管理界面”显示。
ArkUI 开发框架在 @ohos.window
模块中提供了对窗口操作相关方法,比如设置窗口全屏显示,弹出悬浮窗等,本节笔者简单介绍一下窗口模块。
declare namespace window { function create(id: string, type: WindowType): Promise<Window>; function find(id: string): Promise<Window>; function getTopWindow(): Promise<Window>; // Winodw 的能力 interface Window { show(): Promise<void>; destroy(): Promise<void>; moveTo(x: number, y: number): Promise<void>; resetSize(width: number, height: number): Promise<void>; getAvoidArea(type: AvoidAreaType): Promise<AvoidArea>; setFullScreen(isFullScreen: boolean): Promise<void>; setLayoutFullScreen(isLayoutFullScreen: boolean): Promise<void>; loadContent(path: string): Promise<void>; isShowing(): Promise<boolean>; on(type: 'windowSizeChange' | 'systemAvoidAreaChange' | 'keyboardHeightChange', callback: Callback<Size>): void; off(type: 'windowSizeChange' | 'systemAvoidAreaChange' | 'keyboardHeightChange', callback?: Callback<Size>): void; setBackgroundColor(color: string): Promise<void>; } } export default window;
@ohos.window
模块提供的静态方法及 Window
的部分方法说明如下:
id
所对应的窗口 import window from '@ohos.window';
创建一个 Window
,直接调用 create() 相关方法即可,笔者创建的一个窗口类型为 TYPE_APP
的子窗口,代码如下:
private createSubWindow() { window.create(subWindowID, window.WindowType.TYPE_APP).then((subWindow) => { if (subWindow) { this.subWindow = subWindow this.subWindow.setFocusable(false) this.subWindow.setDimBehind(0.4) this.subWindow.resetSize(750, 480) this.subWindow.moveTo(230, 1200) this.subWindow.setBackgroundColor(Color.Red.toString()) this.subWindow.setOutsideTouchable(false) this.subWindow.setTouchable(false) this.status = "create subWindow success" } else { this.status = "create subWindow failure: " + JSON.stringify(subWindow) } }).catch((error) => { this.status = "create subWindow failure: " + JSON.stringify(error) }) }
创建 Widnow 页面
Window
创建完成后,就可以用它来加载待显示的页面了,先创建一个页面并命名为 sub_window.ets
,然后用刚刚创建的 Window
对象来加载,页面代码如下:
@Entry @Component struct SubWindowComponent {
build() {
Column() {
Text("我是子窗口")
.fontSize(30)
}
.backgroundColor("#ccaabb")
.size({width: "100%", height: "100%"})
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。