媒体查询

2024-01-23 13:11 更新

提供根据不同媒体类型定义不同的样式。

说明

从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

该模块不支持在UIAbility的文件声明处使用,即不能在UIAbility的生命周期中调用,需要在创建组件实例后使用。

导入模块

  1. import mediaquery from '@ohos.mediaquery'

mediaquery.matchMediaSync

matchMediaSync(condition: string): MediaQueryListener

设置媒体查询的查询条件,并返回对应的监听句柄。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名

类型

必填

说明

condition

string

媒体事件的匹配条件,具体可参考语法规则

返回值:

类型

说明

MediaQueryListener

媒体事件监听句柄,用于注册和去注册监听回调。

示例:

  1. let listener = mediaquery.matchMediaSync('(orientation: landscape)'); //监听横屏事件

MediaQueryListener

媒体查询的句柄,并包含了申请句柄时的首次查询结果。

系统能力: SystemCapability.ArkUI.ArkUI.Full

属性

名称

类型

可读

可写

说明

matches

boolean

是否符合匹配条件。

media

string

媒体事件的匹配条件。

on

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

通过句柄向对应的查询条件注册回调,当媒体属性发生变更时会触发该回调。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名

类型

必填

说明

type

string

必须填写字符串'change'。

callback

Callback<MediaQueryResult>

向媒体查询注册的回调

示例:

详见off示例

off

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

通过句柄向对应的查询条件取消注册回调,当媒体属性发生变更时不在触发指定的回调。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名

类型

必填

说明

type

string

必须填写字符串'change'。

callback

Callback<MediaQueryResult>

需要去注册的回调,如果参数缺省则去注册该句柄下所有的回调。

示例:

  1. import mediaquery from '@ohos.mediaquery'
  2. let listener = mediaquery.matchMediaSync('(orientation: landscape)'); //监听横屏事件
  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) // 注册回调
  11. listener.off('change', onPortrait) // 取消注册回调

MediaQueryResult

用于执行媒体查询操作。

系统能力: SystemCapability.ArkUI.ArkUI.Full

属性

名称

类型

可读

可写

说明

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. }
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号