媒體查詢

2024-01-23 13:11 更新

提供根據(jù)不同媒體類型定義不同的樣式。

說(shuō)明

從API Version 7開(kāi)始支持。后續(xù)版本如有新增內(nèi)容,則采用上角標(biāo)單獨(dú)標(biāo)記該內(nèi)容的起始版本。

該模塊不支持在UIAbility的文件聲明處使用,即不能在UIAbility的生命周期中調(diào)用,需要在創(chuàng)建組件實(shí)例后使用。

導(dǎo)入模塊

  1. import mediaquery from '@ohos.mediaquery'

mediaquery.matchMediaSync

matchMediaSync(condition: string): MediaQueryListener

設(shè)置媒體查詢的查詢條件,并返回對(duì)應(yīng)的監(jiān)聽(tīng)句柄。

系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full

參數(shù):

參數(shù)名

類型

必填

說(shuō)明

condition

string

媒體事件的匹配條件,具體可參考語(yǔ)法規(guī)則

返回值:

類型

說(shuō)明

MediaQueryListener

媒體事件監(jiān)聽(tīng)句柄,用于注冊(cè)和去注冊(cè)監(jiān)聽(tīng)回調(diào)。

示例:

  1. let listener = mediaquery.matchMediaSync('(orientation: landscape)'); //監(jiān)聽(tīng)橫屏事件

MediaQueryListener

媒體查詢的句柄,并包含了申請(qǐng)句柄時(shí)的首次查詢結(jié)果。

系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full

屬性

名稱

類型

可讀

可寫(xiě)

說(shuō)明

matches

boolean

是否符合匹配條件。

media

string

媒體事件的匹配條件。

on

on(type: 'change', callback: Callback<MediaQueryResult>): void

通過(guò)句柄向?qū)?yīng)的查詢條件注冊(cè)回調(diào),當(dāng)媒體屬性發(fā)生變更時(shí)會(huì)觸發(fā)該回調(diào)。

系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full

參數(shù):

參數(shù)名

類型

必填

說(shuō)明

type

string

必須填寫(xiě)字符串'change'。

callback

Callback<MediaQueryResult>

向媒體查詢注冊(cè)的回調(diào)

示例:

詳見(jiàn)off示例

off

off(type: 'change', callback?: Callback<MediaQueryResult>): void

通過(guò)句柄向?qū)?yīng)的查詢條件取消注冊(cè)回調(diào),當(dāng)媒體屬性發(fā)生變更時(shí)不在觸發(fā)指定的回調(diào)。

系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full

參數(shù):

參數(shù)名

類型

必填

說(shuō)明

type

string

必須填寫(xiě)字符串'change'。

callback

Callback<MediaQueryResult>

需要去注冊(cè)的回調(diào),如果參數(shù)缺省則去注冊(cè)該句柄下所有的回調(diào)。

示例:

  1. import mediaquery from '@ohos.mediaquery'
  2. let listener = mediaquery.matchMediaSync('(orientation: landscape)'); //監(jiān)聽(tīng)橫屏事件
  3. function onPortrait(mediaQueryResult) {
  4. if (mediaQueryResult.matches) {
  5. // do something here
  6. } else {
  7. // do something here
  8. }
  9. }
  10. listener.on('change', onPortrait) // 注冊(cè)回調(diào)
  11. listener.off('change', onPortrait) // 取消注冊(cè)回調(diào)

MediaQueryResult

用于執(zhí)行媒體查詢操作。

系統(tǒng)能力: SystemCapability.ArkUI.ArkUI.Full

屬性

名稱

類型

可讀

可寫(xiě)

說(shuō)明

matches

boolean

是否符合匹配條件。

media

string

媒體事件的匹配條件。

示例

  1. import mediaquery from '@ohos.mediaquery'
  2. @Entry
  3. @Component
  4. struct MediaQueryExample {
  5. @State color: string = '#DB7093'
  6. @State text: string = 'Portrait'
  7. listener = mediaquery.matchMediaSync('(orientation: landscape)')
  8. onPortrait(mediaQueryResult) {
  9. if (mediaQueryResult.matches) {
  10. this.color = '#FFD700'
  11. this.text = 'Landscape'
  12. } else {
  13. this.color = '#DB7093'
  14. this.text = 'Portrait'
  15. }
  16. }
  17. aboutToAppear() {
  18. let portraitFunc = this.onPortrait.bind(this) // bind current js instance
  19. this.listener.on('change', portraitFunc)
  20. }
  21. build() {
  22. Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
  23. Text(this.text).fontSize(24).fontColor(this.color)
  24. }
  25. .width('100%').height('100%')
  26. }
  27. }
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)