屏幕
本模块提供管理屏幕的一些基础能力,包括获取屏幕对象,监听屏幕变化,创建和销毁虚拟屏幕等。
说明:
开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。
本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。本模块接口为系统接口。
导入模块
import screen from '@ohos.screen';
screen.getAllScreens
getAllScreens(callback: AsyncCallback<Array<Screen>>): void
获取所有的屏幕,使用callback异步回调。
系统能力: SystemCapability.WindowManager.WindowManager.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
callback | AsyncCallback<Array<[Screen]>> | 是 | 回调函数。返回当前获取的屏幕对象集合。 |
示例:
var screenClass = null;
screen.getAllScreens((err, data) => {if (err.code) {console.error('Failed to get all screens . Cause: ' + JSON.stringify(err));return;}console.info('Succeeded in getting all screens . Data:' + JSON.stringify(data));screenClass = data[0];
});
screen.getAllScreens
getAllScreens(): Promise<Array<Screen>>
获取所有的屏幕,使用Promise异步回调。
系统能力: SystemCapability.WindowManager.WindowManager.Core
返回值:
类型 | 说明 |
---|---|
Promise<Array<[Screen]>> | Promise对象。返回当前创建的屏幕对象集合。 |
示例:
var screenClass = null;
let promise = screen.getAllScreens();
promise.then((data) => {screenClass = data[0];console.log('Succeeded in getting all screens . Data:'+ JSON.stringify(data));
}).catch((err) => {console.log('Failed to get all screens . Cause: ' + JSON.stringify(err));
});
screen.on('connect' | 'disconnect' | 'change')
on(eventType: 'connect' | 'disconnect' | 'change', callback: Callback<number>): void
开启屏幕状态变化的监听。
系统能力: SystemCapability.WindowManager.WindowManager.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
eventType | string | 是 | 监听事件。 -eventType为"connect"表示屏幕连接事件。 -eventType为"disconnect"表示断开屏幕连接事件。 -eventType为"change"表示屏幕状态改变事件。 |
callback | Callback<number> | 是 | 回调函数。返回屏幕的id。 |
示例:
var callback = (data) => {console.info('Register the callback for screen changes. Data: ' + JSON.stringify(data))
};
screen.on("connect", callback);
screen.off('connect' | 'disconnect' | 'change')
off(eventType: 'connect' | 'disconnect' | 'change', callback?: Callback<number>): void
关闭屏幕状态变化的监听。
系统能力: SystemCapability.WindowManager.WindowManager.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
eventType | string | 是 | 监听事件。 -eventType为"connect"表示屏幕连接事件。 -eventType为"disconnect"表示断开屏幕连接事件。 -eventType为"change"表示屏幕状态改变事件。 |
callback | Callback<number> | 否 | 回调函数。返回屏幕的id。 |
示例:
var callback = (data) => {console.info('Unegister the callback for screen changes. Data: ' + JSON.stringify(data))
};
screen.off("connect", callback);
screen.makeExpand
makeExpand(options:Array<ExpandOption>, callback: AsyncCallback<number>): void
将屏幕设置为扩展模式,使用callback异步回调。
系统能力: SystemCapability.WindowManager.WindowManager.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
options | Array<[ExpandOption]> | 是 | 设置扩展屏幕的参数集合。 |
callback | Callback<number> | 是 | 回调函数。返回扩展屏幕的群组id。 |
示例:
var groupId = null;
screen.makeExpand([{screenId: 0, startX: 0, startY: 0}, {screenId: 1, startX: 1080, startY: 0}], (err, data) => {if (err.code) {console.error('Failed to make screens as expand-screen. Cause:' + JSON.stringify(err));return;}groupId = data;console.info('Succeeded in making screens as expand-screen.Data:' + JSON.stringify(data));
});
screen.makeExpand
makeExpand(options:Array<ExpandOption>): Promise<number>
将屏幕设置为扩展模式,使用Promise异步回调。
系统能力: SystemCapability.WindowManager.WindowManager.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
options | Array<[ExpandOption]> | 是 | 设置扩展屏幕的参数集合。 |
返回值:
类型 | 说明 |
---|---|
Promise<number> | Promise对象。返回扩展屏幕的群组id。 |
示例:
screen.makeExpand([{screenId: 0, startX: 0, startY: 0}, {screenId: 1, startX: 1080, startY: 0}]).then((data) => {console.info('Succeeded in making screens as expand-screen.Data:' + JSON.stringify(data));
}).catch((err) => {console.error('Failed to make screens as expand-screen. Cause:' + JSON.stringify(err));
});
screen.makeMirror
makeMirror(mainScreen:number, mirrorScreen:Array<number>, callback: AsyncCallback<number>): void
将屏幕设置为镜像模式,使用callback异步回调。
系统能力: SystemCapability.WindowManager.WindowManager.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
mainScreen | number | 是 | 主屏幕id。 |
mirrorScreen | Array<number> | 是 | 镜像屏幕id集合。 |
callback | AsyncCallback<number> | 是 | 回调函数。返回镜像屏幕的群组id。 |
示例:
var mainScreenId = 0;
var mirrorScreenIds = [1, 2, 3];
screen.makeMirror(mainScreenId, mirrorScreenIds, (err, data) => {if (err.code) {console.error('Failed to make screens as mirror-screen.Cause:' + JSON.stringify(err));return;}console.info('Succeeded in making screens as mirror-screen.Data:' + JSON.stringify(data));
});
screen.makeMirror
makeMirror(mainScreen:number, mirrorScreen:Array<number>): Promise<number>
将屏幕设置为镜像模式,使用Promise异步回调。
系统能力: SystemCapability.WindowManager.WindowManager.Core
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
mainScreen | number | 是 | 主屏幕id。 |
mirrorScreen | Array<number> | 是 | 镜像屏幕id集合。 |
返回值:
类型 | 说明 |
---|---|
Promise<number> | Promise对象。返回镜像屏幕的群组id。 |
示例:
var mainScreenId = 0;
var mirrorScreenIds = [1, 2, 3];
screen.makeMirror(mainScreenId, mirrorScreenIds).then((data) => {console.info('Succeeded in making screens as mirror-screen.Data:' + JSON.stringify(data));
}).catch((err) => {console.error('Failed to make screens as mirror-screen.Cause:' + JSON.stringify(err));
});
ExpandOption
扩展屏幕的参数。
系统能力: SystemCapability.WindowManager.WindowManager.Core
名称 | 参数类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
screenId | number | 是 | 是 | 屏幕的id。 |
startX | number | 是 | 是 | 屏幕的起始X轴坐标。 |
startY | number | 是 | 是 | 屏幕的起始Y轴坐标。 |
Screen
屏幕实例。
下列API示例中都需先使用[getAllScreens()]方法获取到Screen实例,再通过此实例调用对应方法。
系统能力: SystemCapability.WindowManager.WindowManager.Core
名称 | 参数类型 | 可读 | 可写 | 说明 |
---|---|---|---|---|
id | number | 是 | 否 | 屏幕的id。 |
parent | number | 是 | 否 | 屏幕所属群组的id。 |
supportedModeInfo | Array<[ScreenModeInfo]> | 是 | 否 | 屏幕支持的模式集合。 |
activeModeIndex | number | 是 | 否 | 当前屏幕所处模式索引。 |
orientation | [Orientation] | 是 | 否 | 屏幕方向。 |
setOrientation
setOrientation(orientation: Orientation, callback: AsyncCallback<void>): void
设置屏幕方向,使用callback异步回调。
系统能力: SystemCapability.WindowManager.WindowManager.Core
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
orientation | [Orientation] | 是 | 屏幕方向。 |
callback | AsyncCallback<void> | 是 | 回调函数。当设置屏幕方向成功,err为undefined,否则为错误对象。 |
示例:
screenClass.setOrientation(screen.Orientation.VERTICAL, (err, data) => {if (err.code) {console.error('Failed to setOrientation VERTICAL. Cause: ' + JSON.stringify(err));return;}console.info('Succeeded in setting Orientation VERTICAL. data: ' + JSON.stringify(data));
})
setOrientation
setOrientation(orientation: Orientation): Promise<void>
设置屏幕方向,使用Promise异步回调。
系统能力: SystemCapability.WindowManager.WindowManager.Core
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
orientation | [Orientation] | 是 | 屏幕方向。 |
返回值:
类型 | 说明 |
---|---|
Promise<void> | 无返回结果的Promise对象。 |
示例:
let promise = screenClass.setOrientation(screen.Orientation.VERTICAL);
promise.then((data) => {console.info('Succeeded in setting Orientation VERTICAL. Data: ' + JSON.stringify(data));
}).catch((err) => {console.error('Failed to set Orientation VERTICAL. Cause: ' + JSON.stringify(err));
})
setScreenActiveMode
setScreenActiveMode(modeIndex: number, callback: AsyncCallback<void>): void
设置屏幕当前显示模式,使用callback异步回调。
系统能力: SystemCapability.WindowManager.WindowManager.Core
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
modeIndex | number | 是 | 模式索引。 |
callback | AsyncCallback<void> | 是 | 回调函数。当设置屏幕当前显示模式成功,err为undefined,否则为错误对象。 |
示例:
var modeIndex = 0;
screenClass.setScreenActiveMode(modeIndex, (err, data) => {if (err.code) {console.error('Failed to set ScreenActiveMode 0. Cause: ' + JSON.stringify(err));return;}console.info('Succeeded in setting ScreenActiveMode 0. data: ' + JSON.stringify(data));
})
setScreenActiveMode
setScreenActiveMode(modeIndex: number): Promise<void>
设置屏幕当前显示模式,使用Promise异步回调。
系统能力: SystemCapability.WindowManager.WindowManager.Core
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
modeIndex | number | 是 | 模式索引。 |
返回值:
类型 | 说明 |
---|---|
Promise<void> | 无返回结果的Promise对象。 |
示例:
var modeIndex = 0;
let promise = screenClass.setScreenActiveMode(modeIndex);
promise.then((data) => {console.info('Succeeded in setting ScreenActiveMode 0. Data: ' + JSON.stringify(data));
}).catch((err) => {console.error('Failed to set ScreenActiveMode 0. Cause: ' + JSON.stringify(err));
})
Orientation
屏幕方向枚举。
系统能力: SystemCapability.WindowManager.WindowManager.Core
名称 | 值 | 说明 |
---|---|---|
UNSPECIFIED | 0 | 表示未指定屏幕方向,由系统指定。 |
VERTICAL | 1 | 表示指定屏幕为垂直方向。 |
HORIZONTAL | 2 | 表示指定屏幕为水平方向。 |
REVERSE_VERTICAL | 3 | 表示指定屏幕为反向垂直方向。 |
REVERSE_HORIZONTAL | 4 | 表示指定屏幕为反向水平方向。 |
SENSOR | 5 | 表示屏幕方向跟随传感器方向。 |
SENSOR_VERTICAL | 6 | 表示屏幕方向垂直跟随传感器方向。 |
SENSOR_HORIZONTAL | 7 | 表示屏幕方向水平跟随传感器方向。 |
ScreenModeInfo
屏幕显示模式信息。
系统能力: SystemCapability.WindowManager.WindowManager.Core
名称 | 参数类型 | 可读 | 可写 | 说明 HarmonyOS与OpenHarmony鸿蒙文档籽料:mau123789是v直接拿 |
---|---|---|---|---|
id | number | 是 | 是 | 模式id,所支持的模式由具体设备分辨率和刷新率决定。 |
width | number | 是 | 是 | 屏幕的宽度。 |
height | number | 是 | 是 | 屏幕的高度。 |
refreshRate | number | 是 | 是 | 屏幕的刷新率。 |
鸿蒙开发岗位需要掌握那些核心要领?
目前还有很多小伙伴不知道要学习哪些鸿蒙技术?不知道重点掌握哪些?为了避免学习时频繁踩坑,最终浪费大量时间的。
自己学习时必须要有一份实用的鸿蒙(Harmony NEXT)资料非常有必要。 这里我推荐,根据鸿蒙开发官网梳理与华为内部人员的分享总结出的开发文档。内容包含了:【ArkTS、ArkUI、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战】等技术知识点。
废话就不多说了,接下来好好看下这份资料。
如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。鸿蒙OpenHarmony知识←前往。下面是鸿蒙开发的学习路线图。
针对鸿蒙成长路线打造的鸿蒙学习文档。鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,帮助大家在技术的道路上更进一步。
其中内容包含:
《鸿蒙开发基础》鸿蒙OpenHarmony知识←前往
- ArkTS语言
- 安装DevEco Studio
- 运用你的第一个ArkTS应用
- ArkUI声明式UI开发
- .……
《鸿蒙开发进阶》鸿蒙OpenHarmony知识←前往
- Stage模型入门
- 网络管理
- 数据管理
- 电话服务
- 分布式应用开发
- 通知与窗口管理
- 多媒体技术
- 安全技能
- 任务管理
- WebGL
- 国际化开发
- 应用测试
- DFX面向未来设计
- 鸿蒙系统移植和裁剪定制
- ……
《鸿蒙开发实战》鸿蒙OpenHarmony知识←前往
- ArkTS实践
- UIAbility应用
- 网络案例
- ……
最后
鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行!