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<Array<Display>>): void 157 158获取当前所有的display对象,使用callback异步回调。 159 160**系统能力:** SystemCapability.WindowManager.WindowManager.Core 161 162**参数:** 163 164| 参数名 | 类型 | 必填 | 说明 | 165| -------- | ---------------------------------------------------- | ---- | ------------------------------- | 166| callback | AsyncCallback<Array<[Display](#display)>> | 是 | 回调函数。返回当前所有的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<Array<Display>> 197 198获取当前所有的display对象,使用Promise异步回调。 199 200**系统能力:** SystemCapability.WindowManager.WindowManager.Core 201 202**返回值:** 203 204| 类型 | 说明 | 205| ----------------------------------------------- | ------------------------------------------------------- | 206| Promise<Array<[Display](#display)>> | 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<number>): 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<number> | 是 | 回调函数。返回监听到的显示设备的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<number>): 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<number> | 否 | 需要取消注册的回调函数。若无此参数,则取消注册当前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<boolean>): void 348 349开启屏幕隐私模式变化的监听。当屏幕前台有隐私窗口,则屏幕处于隐私模式,屏幕中的隐私窗口内容无法被截屏或录屏。 350 351**系统接口:** 此接口为系统接口。 352 353**系统能力:** SystemCapability.WindowManager.WindowManager.Core 354 355**参数:** 356 357| 参数名 | 类型 | 必填 | 说明 | 358| -------- |------------------------------------------| ---- | ------------------------------------------------------- | 359| type | string | 是 | 监听事件,固定为'privateModeChange',表示屏幕隐私模式状态发生变化。 | 360| callback | Callback<boolean> | 是 | 回调函数。表示屏幕隐私模式是否改变。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<boolean>): void 380 381关闭屏幕隐私模式变化的监听。当屏幕前台有隐私窗口,则屏幕处于隐私模式,屏幕中的隐私窗口内容无法被截屏或录屏。 382 383**系统接口:** 此接口为系统接口。 384 385**系统能力:** SystemCapability.WindowManager.WindowManager.Core 386 387**参数:** 388 389| 参数名 | 类型 | 必填 | 说明 | 390| -------- |------------------------------------------| ---- | ------------------------------------------------------- | 391| type | string | 是 | 监听事件,固定为'privateModeChange',表示屏幕隐私模式状态发生变化。 | 392| callback | Callback<boolean> | 否 | 回调函数。表示屏幕隐私模式是否改变。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<FoldStatus>): void 591 592开启折叠设备折叠状态变化的监听。 593 594**系统能力:** SystemCapability.Window.SessionManager 595 596**参数:** 597 598| 参数名 | 类型 | 必填 | 说明 | 599| -------- |------------------------------------------| ---- | ------------------------------------------------------- | 600| type | string | 是 | 监听事件,固定为'foldStatusChange',表示折叠设备折叠状态发生变化。 | 601| callback | Callback<[FoldStatus](#foldstatus10)> | 是 | 回调函数。表示折叠设备折叠状态。 | 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<FoldStatus>): void 629 630关闭折叠设备折叠状态变化的监听。 631 632**系统能力:** SystemCapability.Window.SessionManager 633 634**参数:** 635 636| 参数名 | 类型 | 必填 | 说明 | 637| -------- |------------------------------------------| ---- | ------------------------------------------------------- | 638| type | string | 是 | 监听事件,固定为'foldStatusChange',表示折叠设备折叠状态发生变化。 | 639| callback | Callback<[FoldStatus](#foldstatus10)> | 否 | 需要取消注册的回调函数。若无此参数,则取消注册折叠状态变化监听的所有回调函数。 | 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<FoldDisplayMode>): void 662 663开启折叠设备屏幕显示模式变化的监听。 664 665**系统能力:** SystemCapability.Window.SessionManager 666 667**参数:** 668 669| 参数名 | 类型 | 必填 | 说明 | 670| -------- |------------------------------------------| ---- | ------------------------------------------------------- | 671| type | string | 是 | 监听事件,固定为'foldDisplayModeChange',表示折叠设备屏幕显示模式发生变化。 | 672| callback | Callback<[FoldDisplayMode](#folddisplaymode10)> | 是 | 回调函数。表示折叠设备屏幕显示模式。 | 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<FoldDisplayMode>): void 700 701关闭折叠设备屏幕显示模式变化的监听。 702 703**系统能力:** SystemCapability.Window.SessionManager 704 705**参数:** 706 707| 参数名 | 类型 | 必填 | 说明 | 708| -------- |------------------------------------------| ---- | ------------------------------------------------------- | 709| type | string | 是 | 监听事件,固定为'foldDisplayModeChange',表示折叠设备屏幕显示模式发生变化。 | 710| callback | Callback<[FoldDisplayMode](#folddisplaymode10)> | 否 | 需要取消注册的回调函数。若无此参数,则取消注册屏幕显示模式变化监听的所有回调函数。 | 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<Display>): 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<[Display](#display)> | 是 | 回调函数。返回当前默认的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<Display> 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<[Display](#display)> | 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<Array<Display>>): 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<Array<[Display](#display)>> | 是 | 回调函数。返回当前所有的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<Array<Display>> 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<Array<[Display](#display)>> | 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<CutoutInfo>): void 890 891获取挖孔屏、刘海屏、瀑布屏等不可用屏幕区域信息。使用callback异步回调。建议应用布局规避该区域。 892 893**系统能力:** SystemCapability.WindowManager.WindowManager.Core 894 895**参数:** 896 897| 参数名 | 类型 | 必填 | 说明 | 898| ----------- | --------------------------- | ---- | ------------------------------------------------------------ | 899| callback | AsyncCallback<[CutoutInfo](#cutoutinfo9)> | 是 | 回调函数。返回描述不可用屏幕区域的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<CutoutInfo> 932 933获取挖孔屏、刘海屏、瀑布屏等不可用屏幕区域信息。使用Promise异步回调。建议应用布局规避该区域。 934 935**系统能力:** SystemCapability.WindowManager.WindowManager.Core 936 937**返回值:** 938 939| 类型 | 说明 | 940| ------------------- | ------------------------- | 941| Promise<[CutoutInfo](#cutoutinfo9)> | 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