• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.display (屏幕属性)
2
3屏幕属性提供管理显示设备的一些基础能力,包括获取默认显示设备的信息,获取所有显示设备的信息以及监听显示设备的插拔行为。
4
5> **说明:**
6>
7> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8
9## 导入模块
10
11```ts
12import display from '@ohos.display';
13```
14
15## DisplayState
16
17显示设备的状态枚举。
18
19**系统能力:** SystemCapability.WindowManager.WindowManager.Core
20
21| 名称 | 值 | 说明 |
22| -------- | -------- | -------- |
23| STATE_UNKNOWN | 0 | 表示显示设备状态未知。|
24| STATE_OFF | 1 | 表示显示设备状态为关闭。 |
25| STATE_ON | 2 | 表示显示设备状态为开启。|
26| STATE_DOZE | 3 | 表示显示设备为低电耗模式。|
27| STATE_DOZE_SUSPEND | 4 | 表示显示设备为睡眠模式,CPU为挂起状态。 |
28| STATE_VR | 5 | 表示显示设备为VR模式。|
29| STATE_ON_SUSPEND | 6 | 表示显示设备为开启状态,CPU为挂起状态。 |
30
31## Orientation<sup>10+</sup>
32
33显示设备当前显示的方向枚举。
34
35**系统能力:** SystemCapability.WindowManager.WindowManager.Core
36
37| 名称 | 值 | 说明 |
38| -------- | -------- | -------- |
39| PORTRAIT | 0 | 表示设备当前以竖屏方式显示。|
40| LANDSCAPE | 1 | 表示设备当前以横屏方式显示。 |
41| PORTRAIT_INVERTED | 2 | 表示设备当前以反向竖屏方式显示。|
42| LANDSCAPE_INVERTED | 3 | 表示设备当前以反向横屏方式显示。|
43
44## FoldStatus<sup>10+</sup>
45
46当前可折叠设备的折叠状态枚举。
47
48**系统能力:** SystemCapability.Window.SessionManager
49
50| 名称 | 值 | 说明 |
51| -------- | -------- | -------- |
52| FOLD_STATUS_UNKNOWN | 0 | 表示设备当前折叠状态未知。|
53| FOLD_STATUS_EXPANDED | 1 | 表示设备当前折叠状态为完全展开。|
54| FOLD_STATUS_FOLDED | 2 | 表示设备当前折叠状态为折叠。|
55| FOLD_STATUS_HALF_FOLDED | 3 | 表示设备当前折叠状态为半折叠。半折叠指完全展开和折叠之间的状态。|
56
57## FoldDisplayMode<sup>10+</sup>
58
59可折叠设备的显示模式枚举。
60
61**系统能力:** SystemCapability.Window.SessionManager
62
63| 名称 | 值 | 说明 |
64| -------- | -------- | -------- |
65| FOLD_DISPLAY_MODE_UNKNOWN | 0 | 表示设备当前折叠显示模式未知。|
66| FOLD_DISPLAY_MODE_FULL | 1 | 表示设备当前全屏显示。 |
67| FOLD_DISPLAY_MODE_MAIN | 2 | 表示设备当前主屏幕显示。|
68| FOLD_DISPLAY_MODE_SUB | 3 | 表示设备当前子屏幕显示。|
69| FOLD_DISPLAY_MODE_COORDINATION | 4 | 表示设备当前双屏协同显示。|
70
71## FoldCreaseRegion<sup>10+</sup>
72
73折叠折痕区域。
74
75**系统能力:** SystemCapability.Window.SessionManager
76
77| 名称   | 类型 | 可读 | 可写 | 说明               |
78| ------ | -------- | ---- | ---- | ------------------ |
79| displayId   | number   | 是   | 否   | 显示器ID,用于识别折痕所在的屏幕。 |
80| creaseRects    | Array\<[Rect](#rect9)>   | 是   | 否   | 折痕区域。 |
81
82## Rect<sup>9+</sup>
83
84矩形区域。
85
86**系统能力:** SystemCapability.WindowManager.WindowManager.Core
87
88| 名称   | 类型 | 可读 | 可写 | 说明               |
89| ------ | -------- | ---- | ---- | ------------------ |
90| left   | number   | 是   | 是   | 矩形区域的左边界,单位为px,该参数应为整数。 |
91| top    | number   | 是   | 是   | 矩形区域的上边界,单位为px,该参数应为整数。 |
92| width  | number   | 是   | 是   | 矩形区域的宽度,单位为px,该参数应为整数。   |
93| height | number   | 是   | 是   | 矩形区域的高度,单位为px,该参数应为整数。   |
94
95## WaterfallDisplayAreaRects<sup>9+</sup>
96
97瀑布屏曲面部分显示区域。
98
99**系统能力:** SystemCapability.WindowManager.WindowManager.Core
100
101| 名称   | 类型      | 可读 | 可写 | 说明               |
102| ------ | ------------- | ---- | ---- | ------------------ |
103| left   | [Rect](#rect9) | 是   | 否   | 瀑布曲面区域的左侧矩形区域。 |
104| top    | [Rect](#rect9) | 是   | 否   | 瀑布曲面区域的顶部矩形区域。 |
105| right  | [Rect](#rect9) | 是   | 否   | 瀑布曲面区域的右侧矩形区域。 |
106| bottom | [Rect](#rect9) | 是   | 否   | 瀑布曲面区域的底部矩形区域。 |
107
108## CutoutInfo<sup>9+</sup>
109
110挖孔屏、刘海屏、瀑布屏等不可用屏幕区域信息。
111
112**系统能力:** SystemCapability.WindowManager.WindowManager.Core
113
114| 名称                        | 类型      | 可读 | 可写 | 说明               |
115| --------------------------- | ------------- | ---- | ---- | ------------------ |
116| boundingRects                | Array\<[Rect](#rect9)> | 是   | 否   | 挖孔、刘海等区域的边界矩形。 |
117| waterfallDisplayAreaRects   | [WaterfallDisplayAreaRects](#waterfalldisplayarearects9) | 是 | 否 | 瀑布屏曲面部分显示区域。 |
118
119## display.getDefaultDisplaySync<sup>9+</sup>
120
121getDefaultDisplaySync(): Display
122
123获取当前默认的display对象。
124
125**系统能力:** SystemCapability.WindowManager.WindowManager.Core
126
127**返回值:**
128
129| 类型                           | 说明                                           |
130| ------------------------------| ----------------------------------------------|
131| [Display](#display) | 返回默认的display对象。 |
132
133**错误码:**
134
135以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
136
137| 错误码ID | 错误信息 |
138| ------- | ----------------------- |
139| 1400001 | Invalid display or screen. |
140
141**示例:**
142
143```ts
144import display from '@ohos.display';
145
146let displayClass: display.Display | null = null;
147try {
148  displayClass = display.getDefaultDisplaySync();
149} catch (exception) {
150  console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(exception));
151}
152```
153
154## display.getAllDisplays<sup>9+</sup>
155
156getAllDisplays(callback: AsyncCallback&lt;Array&lt;Display&gt;&gt;): void
157
158获取当前所有的display对象,使用callback异步回调。
159
160**系统能力:** SystemCapability.WindowManager.WindowManager.Core
161
162**参数:**
163
164| 参数名 | 类型 | 必填 | 说明 |
165| -------- | ---------------------------------------------------- | ---- | ------------------------------- |
166| callback | AsyncCallback&lt;Array&lt;[Display](#display)&gt;&gt; | 是 | 回调函数。返回当前所有的display对象。 |
167
168**错误码:**
169
170以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
171
172| 错误码ID | 错误信息 |
173| ------- | ----------------------- |
174| 1400001 | Invalid display or screen. |
175
176**示例:**
177
178```ts
179import { BusinessError } from '@ohos.base';
180import display from '@ohos.display';
181
182let displayClass: Array<display.Display> = [];
183display.getAllDisplays((err: BusinessError, data: Array<display.Display>) => {
184  displayClass = data;
185  const errCode: number = err.code;
186  if (errCode) {
187    console.error('Failed to obtain all the display objects. Code: ' + JSON.stringify(err));
188    return;
189  }
190  console.info('Succeeded in obtaining all the display objects. Data: ' + JSON.stringify(data));
191});
192```
193
194## display.getAllDisplays<sup>9+</sup>
195
196getAllDisplays(): Promise&lt;Array&lt;Display&gt;&gt;
197
198获取当前所有的display对象,使用Promise异步回调。
199
200**系统能力:** SystemCapability.WindowManager.WindowManager.Core
201
202**返回值:**
203
204| 类型 | 说明 |
205| ----------------------------------------------- | ------------------------------------------------------- |
206| Promise&lt;Array&lt;[Display](#display)&gt;&gt; | Promise对象。返回当前所有的display对象。 |
207
208**错误码:**
209
210以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
211
212| 错误码ID | 错误信息 |
213| ------- | ----------------------- |
214| 1400001 | Invalid display or screen. |
215
216**示例:**
217
218```ts
219import { BusinessError } from '@ohos.base';
220import display from '@ohos.display';
221
222let displayClass: Array<display.Display> =[];
223let promise: Promise<Array<display.Display>> = display.getAllDisplays();
224promise.then((data: Array<display.Display>) => {
225  displayClass = data;
226  console.info('Succeeded in obtaining all the display objects. Data: ' + JSON.stringify(data));
227}).catch((err: BusinessError) => {
228  console.error('Failed to obtain all the display objects. Code: ' + JSON.stringify(err));
229});
230```
231
232## display.hasPrivateWindow<sup>9+</sup>
233
234hasPrivateWindow(displayId: number): boolean
235
236查询指定display对象上是否有可见的隐私窗口。可通过[setWindowPrivacyMode()](js-apis-window.md#setwindowprivacymode9)接口设置隐私窗口。隐私窗口内容将无法被截屏或录屏。
237
238**系统接口:** 此接口为系统接口。
239
240**系统能力:** SystemCapability.WindowManager.WindowManager.Core
241
242**参数:**
243
244| 参数名 | 类型                      | 必填 | 说明       |
245| ------ | ------------------------- | ---- |----------|
246| id     | number                    | 是   | 显示设备的id,该参数仅支持整数输入。 |
247
248**返回值:**
249
250| 类型                             | 说明                                                                    |
251| -------------------------------- |-----------------------------------------------------------------------|
252|boolean | 查询的display对象上是否有可见的隐私窗口。<br>true表示此display对象上有可见的隐私窗口,false表示此display对象上没有可见的隐私窗口。</br> |
253
254**错误码:**
255
256以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
257
258| 错误码ID | 错误信息 |
259| ------- | -------------------------------------------- |
260| 1400003 | This display manager service works abnormally. |
261
262**示例:**
263
264```ts
265import display from '@ohos.display';
266
267let displayClass: display.Display | null = null;
268try {
269  displayClass = display.getDefaultDisplaySync();
270
271  let ret: boolean = true;
272  try {
273    ret = display.hasPrivateWindow(displayClass.id);
274  } catch (exception) {
275    console.error('Failed to check has privateWindow or not. Code: ' + JSON.stringify(exception));
276  }
277  if (ret == undefined) {
278    console.log("Failed to check has privateWindow or not.");
279  }
280  if (ret) {
281    console.log("There has privateWindow.");
282  } else if (!ret) {
283    console.log("There has no privateWindow.");
284  }
285} catch (exception) {
286  console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(exception));
287}
288```
289
290## display.on('add'|'remove'|'change')
291
292on(type: 'add'|'remove'|'change', callback: Callback&lt;number&gt;): void
293
294开启显示设备变化的监听。
295
296**系统能力:** SystemCapability.WindowManager.WindowManager.Core
297
298**参数:**
299
300| 参数名 | 类型 | 必填 | 说明                                                                                                                              |
301| -------- | -------- | -------- |---------------------------------------------------------------------------------------------------------------------------------|
302| type | string | 是 | 监听事件。<br/>- type为"add",表示增加显示设备事件。例如:插入显示器。<br/>- type为"remove",表示移除显示设备事件。例如:移除显示器。<br/>- type为"change",表示改变显示设备事件。例如:显示器方向改变。 |
303| callback | Callback&lt;number&gt; | 是 | 回调函数。返回监听到的显示设备的id,该参数应为整数。                                                                                                     |
304
305**示例:**
306
307```ts
308import { Callback } from '@ohos.base';
309
310let callback: Callback<number> = (data: number) => {
311  console.info('Listening enabled. Data: ' + JSON.stringify(data));
312};
313try {
314  display.on("add", callback);
315} catch (exception) {
316  console.error('Failed to register callback. Code: ' + JSON.stringify(exception));
317}
318```
319
320## display.off('add'|'remove'|'change')
321
322off(type: 'add'|'remove'|'change', callback?: Callback&lt;number&gt;): void
323
324关闭显示设备变化的监听。
325
326**系统能力:** SystemCapability.WindowManager.WindowManager.Core
327
328**参数:**
329
330| 参数名 | 类型 | 必填 | 说明 |
331| -------- | -------- | -------- | -------- |
332| type | string | 是 | 监听事件。<br/>- type为"add",表示增加显示设备事件。例如:插入显示器。<br/>- type为"remove",表示移除显示设备事件。例如:移除显示器。<br/>- type为"change",表示改变显示设备事件。例如:显示器方向改变。 |
333| callback | Callback&lt;number&gt; | 否 | 需要取消注册的回调函数。若无此参数,则取消注册当前type类型事件监听的所有回调函数。 |
334
335**示例:**
336
337```ts
338try {
339  display.off("remove");
340} catch (exception) {
341  console.error('Failed to unregister callback. Code: ' + JSON.stringify(exception));
342}
343```
344
345## display.on('privateModeChange')<sup>10+</sup>
346
347on(type: 'privateModeChange', callback: Callback&lt;boolean&gt;): void
348
349开启屏幕隐私模式变化的监听。当屏幕前台有隐私窗口,则屏幕处于隐私模式,屏幕中的隐私窗口内容无法被截屏或录屏。
350
351**系统接口:** 此接口为系统接口。
352
353**系统能力:** SystemCapability.WindowManager.WindowManager.Core
354
355**参数:**
356
357| 参数名   | 类型                                       | 必填 | 说明                                                    |
358| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
359| type     | string                                   | 是   | 监听事件,固定为'privateModeChange',表示屏幕隐私模式状态发生变化。 |
360| callback | Callback&lt;boolean&gt; | 是   | 回调函数。表示屏幕隐私模式是否改变。true表示屏幕由非隐私窗口模式变为隐私模式,false表示屏幕由隐私模式变为非隐私模式。 |
361
362**示例:**
363
364```ts
365import { Callback } from '@ohos.base';
366
367let callback: Callback<boolean> = (data: boolean) => {
368  console.info('Listening enabled. Data: ' + JSON.stringify(data));
369};
370try {
371  display.on("privateModeChange", callback);
372} catch (exception) {
373  console.error('Failed to register callback. Code: ' + JSON.stringify(exception));
374}
375```
376
377## display.off('privateModeChange')<sup>10+</sup>
378
379off(type: 'privateModeChange', callback?: Callback&lt;boolean&gt;): void
380
381关闭屏幕隐私模式变化的监听。当屏幕前台有隐私窗口,则屏幕处于隐私模式,屏幕中的隐私窗口内容无法被截屏或录屏。
382
383**系统接口:** 此接口为系统接口。
384
385**系统能力:** SystemCapability.WindowManager.WindowManager.Core
386
387**参数:**
388
389| 参数名   | 类型                                       | 必填 | 说明                                                    |
390| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
391| type     | string                                   | 是   | 监听事件,固定为'privateModeChange',表示屏幕隐私模式状态发生变化。 |
392| callback | Callback&lt;boolean&gt; | 否   | 回调函数。表示屏幕隐私模式是否改变。true表示屏幕由非隐私模式变为隐私模式,false表示屏幕由隐私模式变为非隐私模式。 |
393
394**示例:**
395
396```ts
397try {
398  display.off("privateModeChange");
399} catch (exception) {
400  console.error('Failed to unregister callback. Code: ' + JSON.stringify(exception));
401}
402```
403
404## display.isFoldable<sup>10+</sup>
405isFoldable(): boolean
406
407检查设备是否可折叠。
408
409**系统能力:** SystemCapability.Window.SessionManager
410
411**返回值:**
412
413| 类型 | 说明 |
414| ----------------------------------------------- | ------------------------------------------------------- |
415| boolean | boolean对象,返回当前设备是否可折叠的结果。false表示不可折叠,true表示可折叠。|
416
417**错误码:**
418
419以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
420
421| 错误码ID | 错误信息 |
422| ------- | ----------------------- |
423| 1400003 | This display manager service works abnormally. |
424
425**示例:**
426
427```ts
428import display from '@ohos.display';
429
430let displayClass: display.Display | null = null;
431try {
432  displayClass = display.getDefaultDisplaySync();
433
434  let ret: boolean = false;
435  try {
436    ret = display.isFoldable();
437  } catch (exception) {
438    console.error('Failed to check is foldable or not. Code: ' + JSON.stringify(exception));
439  }
440  if (ret == undefined) {
441    console.log("Failed to check is foldable or not.");
442  }
443  if (ret) {
444    console.log("The device is foldable.");
445  } else if (!ret) {
446    console.log("The device is not foldable.");
447  }
448} catch (exception) {
449  console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(exception));
450}
451```
452
453## display.setFoldDisplayMode<sup>10+</sup>
454setFoldDisplayMode(mode: FoldDisplayMode): void
455
456更改可折叠设备的显示模式。
457
458**系统接口:** 此接口为系统接口。
459
460**系统能力:** SystemCapability.Window.SessionManager
461
462**参数:**
463
464| 参数名   | 类型                                       | 必填 | 说明                                                    |
465| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
466| mode     | [FoldDisplayMode](#folddisplaymode10)    | 是   | 可折叠设备的显示模式。 |
467
468**错误码:**
469
470以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
471
472| 错误码ID | 错误信息 |
473| ------- | ----------------------- |
474| 1400003 | This display manager service works abnormally. |
475
476**示例:**
477
478```ts
479import display from '@ohos.display';
480
481try {
482  let mode: display.FoldDisplayMode = display.FoldDisplayMode.FOLD_DISPLAY_MODE_FULL;
483  display.setFoldDisplayMode(mode);
484} catch (exception) {
485  console.error('Failed to change the fold display mode. Code: ' + JSON.stringify(exception));
486}
487```
488
489## display.getFoldStatus<sup>10+</sup>
490getFoldStatus(): FoldStatus
491
492获取可折叠设备的当前折叠状态。
493
494**系统能力:** SystemCapability.Window.SessionManager
495
496**返回值:**
497
498| 类型 | 说明 |
499| ----------------------------------------------- | ------------------------------------------------------- |
500| [FoldStatus](#foldstatus10) | FoldStatus对象,返回当前可折叠设备的折叠状态。 |
501
502**错误码:**
503
504以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
505
506| 错误码ID | 错误信息 |
507| ------- | ----------------------- |
508| 1400003 | This display manager service works abnormally. |
509
510**示例:**
511
512```ts
513import display from '@ohos.display';
514
515try {
516  display.getFoldStatus();
517} catch (exception) {
518  console.error('Failed to obtain the fold status. Code: ' + JSON.stringify(exception));
519}
520```
521
522## display.getFoldDisplayMode<sup>10+</sup>
523getFoldDisplayMode(): FoldDisplayMode
524
525获取可折叠设备的显示模式。
526
527**系统能力:** SystemCapability.Window.SessionManager
528
529**返回值:**
530
531| 类型 | 说明 |
532| ----------------------------------------------- | ------------------------------------------------------- |
533| [FoldDisplayMode](#folddisplaymode10) | FoldDisplayMode对象,返回当前可折叠设备的显示模式。 |
534
535**错误码:**
536
537以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
538
539| 错误码ID | 错误信息 |
540| ------- | ----------------------- |
541| 1400003 | This display manager service works abnormally. |
542
543**示例:**
544
545```ts
546import display from '@ohos.display';
547
548try {
549  display.getFoldDisplayMode();
550} catch (exception) {
551  console.error('Failed to obtain the fold display mode. Code: ' + JSON.stringify(exception));
552}
553```
554
555## display.getCurrentFoldCreaseRegion<sup>10+</sup>
556getCurrentFoldCreaseRegion(): FoldCreaseRegion
557
558在当前显示模式下获取折叠折痕区域。
559
560**系统能力:** SystemCapability.Window.SessionManager
561
562**返回值:**
563
564| 类型 | 说明 |
565| ----------------------------------------------- | ------------------------------------------------------- |
566| [FoldCreaseRegion](#foldcreaseregion10) | FoldCreaseRegion对象,返回设备在当前显示模式下的折叠折痕区域。 |
567
568**错误码:**
569
570以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
571
572| 错误码ID | 错误信息 |
573| ------- | ----------------------- |
574| 1400003 | This display manager service works abnormally. |
575
576**示例:**
577
578```ts
579import display from '@ohos.display';
580
581try {
582  display.getCurrentFoldCreaseRegion();
583} catch (exception) {
584  console.error('Failed to obtain the current fold crease region. Code: ' + JSON.stringify(exception));
585}
586```
587
588## display.on('foldStatusChange')<sup>10+</sup>
589
590on(type: 'foldStatusChange', callback: Callback&lt;FoldStatus&gt;): void
591
592开启折叠设备折叠状态变化的监听。
593
594**系统能力:** SystemCapability.Window.SessionManager
595
596**参数:**
597
598| 参数名   | 类型                                       | 必填 | 说明                                                    |
599| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
600| type     | string                                   | 是   | 监听事件,固定为'foldStatusChange',表示折叠设备折叠状态发生变化。 |
601| callback | Callback&lt;[FoldStatus](#foldstatus10)&gt; | 是   | 回调函数。表示折叠设备折叠状态。 |
602
603**错误码:**
604
605以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
606
607| 错误码ID | 错误信息 |
608| ------- | ----------------------- |
609| 1400003 | This display manager service works abnormally. |
610
611**示例:**
612
613```ts
614import { Callback } from '@ohos.base';
615
616let callback: Callback<display.FoldStatus> = (data: display.FoldStatus) => {
617  console.info('Listening enabled. Data: ' + JSON.stringify(data));
618};
619try {
620  display.on('foldStatusChange', callback);
621} catch (exception) {
622  console.error('Failed to register callback. Code: ' + JSON.stringify(exception));
623}
624```
625
626## display.off('foldStatusChange')<sup>10+</sup>
627
628off(type: 'foldStatusChange', callback?: Callback&lt;FoldStatus&gt;): void
629
630关闭折叠设备折叠状态变化的监听。
631
632**系统能力:** SystemCapability.Window.SessionManager
633
634**参数:**
635
636| 参数名   | 类型                                       | 必填 | 说明                                                    |
637| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
638| type     | string                                   | 是   | 监听事件,固定为'foldStatusChange',表示折叠设备折叠状态发生变化。 |
639| callback | Callback&lt;[FoldStatus](#foldstatus10)&gt; | 否   | 需要取消注册的回调函数。若无此参数,则取消注册折叠状态变化监听的所有回调函数。 |
640
641**错误码:**
642
643以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
644
645| 错误码ID | 错误信息 |
646| ------- | ----------------------- |
647| 1400003 | This display manager service works abnormally. |
648
649**示例:**
650
651```ts
652try {
653  display.off('foldStatusChange');
654} catch (exception) {
655  console.error('Failed to unregister callback. Code: ' + JSON.stringify(exception));
656}
657```
658
659## display.on('foldDisplayModeChange')<sup>10+</sup>
660
661on(type: 'foldDisplayModeChange', callback: Callback&lt;FoldDisplayMode&gt;): void
662
663开启折叠设备屏幕显示模式变化的监听。
664
665**系统能力:** SystemCapability.Window.SessionManager
666
667**参数:**
668
669| 参数名   | 类型                                       | 必填 | 说明                                                    |
670| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
671| type     | string                                   | 是   | 监听事件,固定为'foldDisplayModeChange',表示折叠设备屏幕显示模式发生变化。 |
672| callback | Callback&lt;[FoldDisplayMode](#folddisplaymode10)&gt; | 是   | 回调函数。表示折叠设备屏幕显示模式。 |
673
674**错误码:**
675
676以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
677
678| 错误码ID | 错误信息 |
679| ------- | ----------------------- |
680| 1400003 | This display manager service works abnormally. |
681
682**示例:**
683
684```ts
685import { Callback } from '@ohos.base';
686
687let callback: Callback<display.FoldDisplayMode> = (data: display.FoldDisplayMode) => {
688  console.info('Listening enabled. Data: ' + JSON.stringify(data));
689};
690try {
691  display.on('foldDisplayModeChange', callback);
692} catch (exception) {
693  console.error('Failed to register callback. Code: ' + JSON.stringify(exception));
694}
695```
696
697## display.off('foldDisplayModeChange')<sup>10+</sup>
698
699off(type: 'foldDisplayModeChange', callback?: Callback&lt;FoldDisplayMode&gt;): void
700
701关闭折叠设备屏幕显示模式变化的监听。
702
703**系统能力:** SystemCapability.Window.SessionManager
704
705**参数:**
706
707| 参数名   | 类型                                       | 必填 | 说明                                                    |
708| -------- |------------------------------------------| ---- | ------------------------------------------------------- |
709| type     | string                                   | 是   | 监听事件,固定为'foldDisplayModeChange',表示折叠设备屏幕显示模式发生变化。 |
710| callback | Callback&lt;[FoldDisplayMode](#folddisplaymode10)&gt; | 否   | 需要取消注册的回调函数。若无此参数,则取消注册屏幕显示模式变化监听的所有回调函数。 |
711
712**错误码:**
713
714以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
715
716| 错误码ID | 错误信息 |
717| ------- | ----------------------- |
718| 1400003 | This display manager service works abnormally. |
719
720**示例:**
721
722```ts
723try {
724  display.off('foldDisplayModeChange');
725} catch (exception) {
726  console.error('Failed to unregister callback. Code: ' + JSON.stringify(exception));
727}
728```
729
730## display.getDefaultDisplay<sup>(deprecated)</sup>
731
732getDefaultDisplay(callback: AsyncCallback&lt;Display&gt;): void
733
734获取当前默认的display对象,使用callback异步回调。
735
736> **说明:**
737>
738> 从 API version 7开始支持,从API version 9开始废弃,推荐使用[getDefaultDisplaySync()](#displaygetdefaultdisplaysync9)。
739
740**系统能力:** SystemCapability.WindowManager.WindowManager.Core
741
742**参数:**
743
744| 参数名 | 类型 | 必填 | 说明 |
745| -------- | -------- | -------- | -------- |
746| callback | AsyncCallback&lt;[Display](#display)&gt; | 是 | 回调函数。返回当前默认的display对象。 |
747
748**示例:**
749
750```ts
751import { BusinessError } from '@ohos.base';
752
753let displayClass: display.Display | null = null;
754display.getDefaultDisplay((err: BusinessError, data: display.Display) => {
755  const errCode: number = err.code;
756  if (errCode) {
757    console.error('Failed to obtain the default display object. Code:  ' + JSON.stringify(err));
758    return;
759  }
760  console.info('Succeeded in obtaining the default display object. Data:' + JSON.stringify(data));
761  displayClass = data;
762});
763```
764
765## display.getDefaultDisplay<sup>(deprecated)</sup>
766
767getDefaultDisplay(): Promise&lt;Display&gt;
768
769获取当前默认的display对象,使用Promise异步回调。
770
771> **说明:**
772>
773> 从 API version 7开始支持,从API version 9开始废弃,推荐使用[getDefaultDisplaySync()](#displaygetdefaultdisplaysync9)。
774
775**系统能力:** SystemCapability.WindowManager.WindowManager.Core
776
777**返回值:**
778
779| 类型                               | 说明                                           |
780| ---------------------------------- | ---------------------------------------------- |
781| Promise&lt;[Display](#display)&gt; | Promise对象。返回当前默认的display对象。 |
782
783**示例:**
784
785```ts
786import { BusinessError } from '@ohos.base';
787
788let displayClass: display.Display | null = null;
789let promise: Promise<display.Display> = display.getDefaultDisplay();
790promise.then((data: display.Display) => {
791  displayClass = data;
792  console.info('Succeeded in obtaining the default display object. Data:' + JSON.stringify(data));
793}).catch((err: BusinessError) => {
794  console.error('Failed to obtain the default display object. Code:  ' + JSON.stringify(err));
795});
796```
797
798## display.getAllDisplay<sup>(deprecated)</sup>
799
800getAllDisplay(callback: AsyncCallback&lt;Array&lt;Display&gt;&gt;): void
801
802获取当前所有的display对象,使用callback异步回调。
803
804> **说明:**
805>
806> 从 API version 7开始支持,从API version 9开始废弃,推荐使用[getAllDisplays()](#displaygetalldisplays9)。
807
808**系统能力:** SystemCapability.WindowManager.WindowManager.Core
809
810**参数:**
811
812| 参数名   | 类型                                                 | 必填 | 说明                            |
813| -------- | ---------------------------------------------------- | ---- | ------------------------------- |
814| callback | AsyncCallback&lt;Array&lt;[Display](#display)&gt;&gt; | 是   | 回调函数。返回当前所有的display对象。 |
815
816**示例:**
817
818```ts
819import { BusinessError } from '@ohos.base';
820
821display.getAllDisplay((err: BusinessError, data: Array<display.Display>) => {
822  const errCode: number = err.code;
823  if (errCode) {
824    console.error('Failed to obtain all the display objects. Code: ' + JSON.stringify(err));
825    return;
826  }
827  console.info('Succeeded in obtaining all the display objects. Data: ' + JSON.stringify(data));
828});
829```
830
831## display.getAllDisplay<sup>(deprecated)</sup>
832
833getAllDisplay(): Promise&lt;Array&lt;Display&gt;&gt;
834
835获取当前所有的display对象,使用Promise异步回调。
836
837> **说明:**
838>
839> 从 API version 7开始支持,从API version 9开始废弃,推荐使用[getAllDisplays()](#displaygetalldisplays9-1)。
840
841**系统能力:** SystemCapability.WindowManager.WindowManager.Core
842
843**返回值:**
844
845| 类型                                            | 说明                                                    |
846| ----------------------------------------------- | ------------------------------------------------------- |
847| Promise&lt;Array&lt;[Display](#display)&gt;&gt; | Promise对象。返回当前所有的display对象。 |
848
849**示例:**
850
851```ts
852import { BusinessError } from '@ohos.base';
853
854let promise: Promise<Array<display.Display>> = display.getAllDisplay();
855promise.then((data: Array<display.Display>) => {
856  console.info('Succeeded in obtaining all the display objects. Data: ' + JSON.stringify(data));
857}).catch((err: BusinessError) => {
858  console.error('Failed to obtain all the display objects. Code: ' + JSON.stringify(err));
859});
860```
861
862## Display
863屏幕实例。描述display对象的属性和方法。
864
865下列API示例中都需先使用[getAllDisplays()](#displaygetalldisplays9)、[getDefaultDisplaySync()](#displaygetdefaultdisplaysync9)中的任一方法获取到Display实例,再通过此实例调用对应方法。
866
867### 属性
868
869**系统能力:** SystemCapability.WindowManager.WindowManager.Core
870
871| 名称 | 类型 | 可读 | 可写 | 说明                                                                                                            |
872| -------- | -------- | -------- | -------- |---------------------------------------------------------------------------------------------------------------|
873| id | number | 是 | 否 | 显示设备的id号,该参数应为整数。                                                                                             |
874| name | string | 是 | 否 | 显示设备的名称。                                                                                                      |
875| alive | boolean | 是 | 否 | 显示设备是否启用。                                                                                                     |
876| state | [DisplayState](#displaystate) | 是 | 否 | 显示设备的状态。                                                                                                      |
877| refreshRate | number | 是 | 否 | 显示设备的刷新率,该参数应为整数,单位为hz。                                                                                             |
878| rotation | number | 是 | 否 | 显示设备的屏幕顺时针旋转角度。<br>值为0时,表示显示设备屏幕顺时针旋转为0°;<br>值为1时,表示显示设备屏幕顺时针旋转为90°;<br>值为2时,表示显示设备屏幕顺时针旋转为180°;<br>值为3时,表示显示设备屏幕顺时针旋转为270°。 |
879| width | number | 是 | 否 | 显示设备的屏幕宽度,单位为px,该参数应为整数。                                                                                        |
880| height | number | 是 | 否 | 显示设备的屏幕高度,单位为px,该参数应为整数。                                                                                        |
881| densityDPI | number | 是 | 否 | 显示设备的屏幕密度,表示每英寸点数。该参数为浮点数,单位为px,一般取值160.0、480.0等。                                                                   |
882| orientation<sup>10+</sup> | [Orientation](#orientation10) | 是 | 否 | 表示屏幕当前显示的方向。                                                                                                  |
883| densityPixels | number | 是 | 否 | 显示设备的逻辑密度,是像素单位无关的缩放系数。该参数为浮点数,一般取值1.0、3.0等。                                                                  |
884| scaledDensity | number | 是 | 否 | 显示设备的显示字体的缩放因子。该参数为浮点数,通常与densityPixels相同。                                                                    |
885| xDPI | number | 是 | 否 | x方向中每英寸屏幕的确切物理像素值,该参数为浮点数。                                                                                    |
886| yDPI | number | 是 | 否 | y方向中每英寸屏幕的确切物理像素值,该参数为浮点数。                                                                                    |
887
888### getCutoutInfo<sup>9+</sup>
889getCutoutInfo(callback: AsyncCallback&lt;CutoutInfo&gt;): void
890
891获取挖孔屏、刘海屏、瀑布屏等不可用屏幕区域信息。使用callback异步回调。建议应用布局规避该区域。
892
893**系统能力:** SystemCapability.WindowManager.WindowManager.Core
894
895**参数:**
896
897| 参数名      | 类型                        | 必填 | 说明                                                         |
898| ----------- | --------------------------- | ---- | ------------------------------------------------------------ |
899| callback    | AsyncCallback&lt;[CutoutInfo](#cutoutinfo9)&gt;   | 是   | 回调函数。返回描述不可用屏幕区域的CutoutInfo对象。 |
900
901**错误码:**
902
903以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
904
905| 错误码ID | 错误信息 |
906| ------- | ----------------------- |
907| 1400001 | Invalid display or screen. |
908
909**示例:**
910
911```ts
912import { BusinessError } from '@ohos.base';
913
914let displayClass: display.Display | null = null;
915try {
916  displayClass = display.getDefaultDisplaySync();
917
918  displayClass.getCutoutInfo((err: BusinessError, data: display.CutoutInfo) => {
919    const errCode: number = err.code;
920    if (errCode) {
921      console.error('Failed to get cutoutInfo. Code: ' + JSON.stringify(err));
922      return;
923    }
924    console.info('Succeeded in getting cutoutInfo. data: ' + JSON.stringify(data));
925  });
926} catch (exception) {
927  console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(exception));
928}
929```
930### getCutoutInfo<sup>9+</sup>
931getCutoutInfo(): Promise&lt;CutoutInfo&gt;
932
933获取挖孔屏、刘海屏、瀑布屏等不可用屏幕区域信息。使用Promise异步回调。建议应用布局规避该区域。
934
935**系统能力:** SystemCapability.WindowManager.WindowManager.Core
936
937**返回值:**
938
939| 类型                | 说明                      |
940| ------------------- | ------------------------- |
941| Promise&lt;[CutoutInfo](#cutoutinfo9)&gt; | Promise对象。返回描述不可用屏幕区域的CutoutInfo对象。 |
942
943**错误码:**
944
945以下错误码的详细介绍请参见[屏幕错误码](../errorcodes/errorcode-display.md)。
946
947| 错误码ID | 错误信息 |
948| ------- | ----------------------- |
949| 1400001 | Invalid display or screen. |
950
951**示例:**
952
953```ts
954import { BusinessError } from '@ohos.base';
955
956let displayClass: display.Display | null = null;
957try {
958  displayClass = display.getDefaultDisplaySync();
959
960  let promise: Promise<display.CutoutInfo> = displayClass.getCutoutInfo();
961  promise.then((data: display.CutoutInfo) => {
962    console.info('Succeeded in getting cutoutInfo. Data: ' + JSON.stringify(data));
963  }).catch((err: BusinessError) => {
964    console.error('Failed to obtain all the display objects. Code: ' + JSON.stringify(err));
965  });
966} catch (exception) {
967  console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(exception));
968}
969```
970