屏幕屬性

2024-01-23 13:18 更新

屏幕屬性提供管理顯示設(shè)備的一些基礎(chǔ)能力,包括獲取默認(rèn)顯示設(shè)備的信息,獲取所有顯示設(shè)備的信息以及監(jiān)聽顯示設(shè)備的插拔行為。

說明

本模塊首批接口從API version 7開始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。

導(dǎo)入模塊

  1. import display from '@ohos.display';

DisplayState

顯示設(shè)備的狀態(tài)枚舉。

系統(tǒng)能力: SystemCapability.WindowManager.WindowManager.Core

名稱

說明

STATE_UNKNOWN

0

表示顯示設(shè)備狀態(tài)未知。

STATE_OFF

1

表示顯示設(shè)備狀態(tài)為關(guān)閉。

STATE_ON

2

表示顯示設(shè)備狀態(tài)為開啟。

STATE_DOZE

3

表示顯示設(shè)備為低電耗模式。

STATE_DOZE_SUSPEND

4

表示顯示設(shè)備為睡眠模式,CPU為掛起狀態(tài)。

STATE_VR

5

表示顯示設(shè)備為VR模式。

STATE_ON_SUSPEND

6

表示顯示設(shè)備為開啟狀態(tài),CPU為掛起狀態(tài)。

Rect9+

矩形區(qū)域。

系統(tǒng)能力: SystemCapability.WindowManager.WindowManager.Core

名稱

類型

可讀

可寫

說明

left

number

矩形區(qū)域的左邊界,單位為像素。

top

number

矩形區(qū)域的上邊界,單位為像素。

width

number

矩形區(qū)域的寬度,單位為像素。

height

number

矩形區(qū)域的高度,單位為像素。

WaterfallDisplayAreaRects9+

瀑布屏曲面部分顯示區(qū)域。

系統(tǒng)能力: SystemCapability.WindowManager.WindowManager.Core

名稱

類型

可讀

可寫

說明

left

Rect

瀑布曲面區(qū)域的左側(cè)矩形區(qū)域。

top

Rect

瀑布曲面區(qū)域的頂部矩形區(qū)域。

right

Rect

瀑布曲面區(qū)域的右側(cè)矩形區(qū)域。

bottom

Rect

瀑布曲面區(qū)域的底部矩形區(qū)域。

CutoutInfo9+

挖孔屏、劉海屏、瀑布屏等不可用屏幕區(qū)域信息。

系統(tǒng)能力: SystemCapability.WindowManager.WindowManager.Core

名稱

類型

可讀

可寫

說明

boundingRects

Array<Rect>

挖孔、劉海等區(qū)域的邊界矩形。

waterfallDisplayAreaRects

WaterfallDisplayAreaRects

瀑布屏曲面部分顯示區(qū)域。

display.getDefaultDisplaySync9+

getDefaultDisplaySync(): Display

獲取當(dāng)前默認(rèn)的display對象。

系統(tǒng)能力: SystemCapability.WindowManager.WindowManager.Core

返回值:

類型

說明

Display

返回默認(rèn)的display對象。

錯誤碼:

以下錯誤碼的詳細(xì)介紹請參見屏幕錯誤碼。

錯誤碼ID

錯誤信息

1400001

Invalid display or screen.

示例:

  1. let displayClass = null;
  2. try {
  3. displayClass = display.getDefaultDisplaySync();
  4. } catch (exception) {
  5. console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(exception));
  6. }

display.getAllDisplays9+

getAllDisplays(callback: AsyncCallback<Array<Display>>): void

獲取當(dāng)前所有的display對象,使用callback異步回調(diào)。

系統(tǒng)能力: SystemCapability.WindowManager.WindowManager.Core

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<Array<Display>>

回調(diào)函數(shù)。返回當(dāng)前所有的display對象。

錯誤碼:

以下錯誤碼的詳細(xì)介紹請參見屏幕錯誤碼

錯誤碼ID

錯誤信息

1400001

Invalid display or screen.

示例:

  1. let displayClass = null;
  2. display.getAllDisplays((err, data) => {
  3. displayClass = data;
  4. if (err.code) {
  5. console.error('Failed to obtain all the display objects. Code: ' + JSON.stringify(err));
  6. return;
  7. }
  8. console.info('Succeeded in obtaining all the display objects. Data: ' + JSON.stringify(data));
  9. });

display.getAllDisplays9+

getAllDisplays(): Promise<Array<Display>>

獲取當(dāng)前所有的display對象,使用Promise異步回調(diào)。

系統(tǒng)能力: SystemCapability.WindowManager.WindowManager.Core

返回值:

類型

說明

Promise<Array<Display>>

Promise對象。返回當(dāng)前所有的display對象。

錯誤碼:

以下錯誤碼的詳細(xì)介紹請參見屏幕錯誤碼

錯誤碼ID

錯誤信息

1400001

Invalid display or screen.

示例:

  1. let displayClass = null;
  2. let promise = display.getAllDisplays();
  3. promise.then((data) => {
  4. displayClass = data;
  5. console.info('Succeeded in obtaining all the display objects. Data: ' + JSON.stringify(data));
  6. }).catch((err) => {
  7. console.error('Failed to obtain all the display objects. Code: ' + JSON.stringify(err));
  8. });

display.on('add'|'remove'|'change')

on(type: 'add'|'remove'|'change', callback: Callback<number>): void

開啟顯示設(shè)備變化的監(jiān)聽。

系統(tǒng)能力: SystemCapability.WindowManager.WindowManager.Core

參數(shù):

參數(shù)名

類型

必填

說明

type

string

監(jiān)聽事件。

- type為"add",表示增加顯示設(shè)備事件。例如:插入顯示器。

- type為"remove",表示移除顯示設(shè)備事件。例如:移除顯示器。

- type為"change",表示改變顯示設(shè)備事件。例如:顯示器方向改變。

callback

Callback<number>

回調(diào)函數(shù)。返回監(jiān)聽到的顯示設(shè)備的id。

示例:

  1. let callback = (data) => {
  2. console.info('Listening enabled. Data: ' + JSON.stringify(data));
  3. };
  4. try {
  5. display.on("add", callback);
  6. } catch (exception) {
  7. console.error('Failed to register callback. Code: ' + JSON.stringify(exception));
  8. }

display.off('add'|'remove'|'change')

off(type: 'add'|'remove'|'change', callback?: Callback<number>): void

關(guān)閉顯示設(shè)備變化的監(jiān)聽。

系統(tǒng)能力: SystemCapability.WindowManager.WindowManager.Core

參數(shù):

參數(shù)名

類型

必填

說明

type

string

監(jiān)聽事件。

- type為"add",表示增加顯示設(shè)備事件。例如:插入顯示器。

- type為"remove",表示移除顯示設(shè)備事件。例如:移除顯示器。

- type為"change",表示改變顯示設(shè)備事件。例如:顯示器方向改變。

callback

Callback<number>

回調(diào)函數(shù)。返回監(jiān)聽到的顯示設(shè)備的id。

示例:

  1. try {
  2. display.off("remove");
  3. } catch (exception) {
  4. console.error('Failed to unregister callback. Code: ' + JSON.stringify(exception));
  5. }

display.getDefaultDisplay(deprecated)

getDefaultDisplay(callback: AsyncCallback<Display>): void

獲取當(dāng)前默認(rèn)的display對象,使用callback異步回調(diào)。

說明

從 API version 7開始支持,從API version 9開始廢棄,推薦使用getDefaultDisplaySync()。

系統(tǒng)能力: SystemCapability.WindowManager.WindowManager.Core

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<Display>

回調(diào)函數(shù)。返回當(dāng)前默認(rèn)的display對象。

示例:

  1. let displayClass = null;
  2. display.getDefaultDisplay((err, data) => {
  3. if (err.code) {
  4. console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(err));
  5. return;
  6. }
  7. console.info('Succeeded in obtaining the default display object. Data:' + JSON.stringify(data));
  8. displayClass = data;
  9. });

display.getDefaultDisplay(deprecated)

getDefaultDisplay(): Promise<Display>

獲取當(dāng)前默認(rèn)的display對象,使用Promise異步回調(diào)。

說明

從 API version 7開始支持,從API version 9開始廢棄,推薦使用getDefaultDisplaySync()

系統(tǒng)能力: SystemCapability.WindowManager.WindowManager.Core

返回值:

類型

說明

Promise<Display>

Promise對象。返回當(dāng)前默認(rèn)的display對象。

示例:

  1. let displayClass = null;
  2. let promise = display.getDefaultDisplay();
  3. promise.then((data) => {
  4. displayClass = data;
  5. console.info('Succeeded in obtaining the default display object. Data:' + JSON.stringify(data));
  6. }).catch((err) => {
  7. console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(err));
  8. });

display.getAllDisplay(deprecated)

getAllDisplay(callback: AsyncCallback<Array<Display>>): void

獲取當(dāng)前所有的display對象,使用callback異步回調(diào)。

說明

從 API version 7開始支持,從API version 9開始廢棄,推薦使用getAllDisplays()

系統(tǒng)能力: SystemCapability.WindowManager.WindowManager.Core

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<Array<Display>>

回調(diào)函數(shù)。返回當(dāng)前所有的display對象。

示例:

  1. display.getAllDisplay((err, data) => {
  2. if (err.code) {
  3. console.error('Failed to obtain all the display objects. Code: ' + JSON.stringify(err));
  4. return;
  5. }
  6. console.info('Succeeded in obtaining all the display objects. Data: ' + JSON.stringify(data));
  7. });

display.getAllDisplay(deprecated)

getAllDisplay(): Promise<Array<Display>>

獲取當(dāng)前所有的display對象,使用Promise異步回調(diào)。

說明

從 API version 7開始支持,從API version 9開始廢棄,推薦使用getAllDisplays()。

系統(tǒng)能力: SystemCapability.WindowManager.WindowManager.Core

返回值:

類型

說明

Promise<Array<Display>>

Promise對象。返回當(dāng)前所有的display對象。

示例:

  1. let promise = display.getAllDisplay();
  2. promise.then((data) => {
  3. console.info('Succeeded in obtaining all the display objects. Data: ' + JSON.stringify(data));
  4. }).catch((err) => {
  5. console.error('Failed to obtain all the display objects. Code: ' + JSON.stringify(err));
  6. });

Display

屏幕實(shí)例。描述display對象的屬性和方法。

下列API示例中都需先使用getAllDisplays()、getDefaultDisplaySync()中的任一方法獲取到Display實(shí)例,再通過此實(shí)例調(diào)用對應(yīng)方法。

屬性

系統(tǒng)能力: SystemCapability.WindowManager.WindowManager.Core

名稱

類型

可讀

可寫

說明

id

number

顯示設(shè)備的id號。

name

string

顯示設(shè)備的名稱。

alive

boolean

顯示設(shè)備是否啟用。

state

DisplayState

顯示設(shè)備的狀態(tài)。

refreshRate

number

顯示設(shè)備的刷新率。

rotation

number

顯示設(shè)備的屏幕旋轉(zhuǎn)角度。

值為0時(shí),表示顯示設(shè)備屏幕旋轉(zhuǎn)為0°;

值為1時(shí),表示顯示設(shè)備屏幕旋轉(zhuǎn)為90°;

值為2時(shí),表示顯示設(shè)備屏幕旋轉(zhuǎn)為180°;

值為3時(shí),表示顯示設(shè)備屏幕旋轉(zhuǎn)為270°。

width

number

顯示設(shè)備的寬度,單位為像素。

height

number

顯示設(shè)備的高度,單位為像素。

densityDPI

number

顯示設(shè)備的屏幕密度,表示每英寸點(diǎn)數(shù)。一般取值160,480等。

densityPixels

number

顯示設(shè)備的邏輯密度,是像素單位無關(guān)的縮放系數(shù)。一般取值1,3等。

scaledDensity

number

顯示設(shè)備的顯示字體的縮放因子。通常與densityPixels相同。

xDPI

number

x方向中每英寸屏幕的確切物理像素值。

yDPI

number

y方向中每英寸屏幕的確切物理像素值。

getCutoutInfo9+

getCutoutInfo(callback: AsyncCallback<CutoutInfo>): void

獲取挖孔屏、劉海屏、瀑布屏等不可用屏幕區(qū)域信息。使用callback異步回調(diào)。建議應(yīng)用布局規(guī)避該區(qū)域。

系統(tǒng)能力: SystemCapability.WindowManager.WindowManager.Core

參數(shù):

參數(shù)名

類型

必填

說明

callback

AsyncCallback<CutoutInfo>

回調(diào)函數(shù)。返回描述不可用屏幕區(qū)域的CutoutInfo對象。

錯誤碼:

以下錯誤碼的詳細(xì)介紹請參見屏幕錯誤碼。

錯誤碼ID

錯誤信息

1400001

Invalid display or screen.

示例:

  1. let displayClass = null;
  2. try {
  3. displayClass = display.getDefaultDisplaySync();
  4. displayClass.getCutoutInfo((err, data) => {
  5. if (err.code) {
  6. console.error('Failed to get cutoutInfo. Code: ' + JSON.stringify(err));
  7. return;
  8. }
  9. console.info('Succeeded in getting cutoutInfo. data: ' + JSON.stringify(data));
  10. });
  11. } catch (exception) {
  12. console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(exception));
  13. }

getCutoutInfo9+

getCutoutInfo(): Promise<CutoutInfo>

獲取挖孔屏、劉海屏、瀑布屏等不可用屏幕區(qū)域信息。使用Promise異步回調(diào)。建議應(yīng)用布局規(guī)避該區(qū)域。

系統(tǒng)能力: SystemCapability.WindowManager.WindowManager.Core

返回值:

類型

說明

Promise<CutoutInfo>

Promise對象。返回描述不可用屏幕區(qū)域的CutoutInfo對象。

錯誤碼:

以下錯誤碼的詳細(xì)介紹請參見屏幕錯誤碼。

錯誤碼ID

錯誤信息

1400001

Invalid display or screen.

示例:

  1. let displayClass = null;
  2. try {
  3. displayClass = display.getDefaultDisplaySync();
  4. let promise = displayClass.getCutoutInfo();
  5. promise.then((data) => {
  6. console.info('Succeeded in getting cutoutInfo. Data: ' + JSON.stringify(data));
  7. }).catch((err) => {
  8. console.error('Failed to obtain all the display objects. Code: ' + JSON.stringify(err));
  9. });
  10. } catch (exception) {
  11. console.error('Failed to obtain the default display object. Code: ' + JSON.stringify(exception));
  12. }
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號