# @ohos.mediaquery (媒体查询) æä¾›æ ¹æ®ä¸åŒåª’体类型定义ä¸åŒçš„æ ·å¼ã€‚ > **说明:** > > 从API Version 7开始支æŒã€‚åŽç»ç‰ˆæœ¬å¦‚æœ‰æ–°å¢žå†…å®¹ï¼Œåˆ™é‡‡ç”¨ä¸Šè§’æ ‡å•ç‹¬æ ‡è®°è¯¥å†…容的起始版本。 > > 该模å—ä¸æ”¯æŒåœ¨[UIAbility](../apis-ability-kit/js-apis-app-ability-uiAbility.md)的文件声明处使用,å³ä¸èƒ½åœ¨UIAbility的生命周期ä¸è°ƒç”¨ï¼Œéœ€è¦åœ¨åˆ›å»ºç»„件实例åŽä½¿ç”¨ã€‚ > > 本模å—功能ä¾èµ–UI的执行上下文,ä¸å¯åœ¨UI上下文ä¸æ˜Žç¡®çš„地方使用,å‚è§[UIContext](js-apis-arkui-UIContext.md#uicontext)说明。 > > 从API version 10开始,å¯ä»¥é€šè¿‡ä½¿ç”¨[UIContext](js-apis-arkui-UIContext.md#uicontext)ä¸çš„[getMediaQuery](js-apis-arkui-UIContext.md#getmediaquery)方法获å–当å‰UI上下文关è”çš„[MediaQuery](js-apis-arkui-UIContext.md#mediaquery)对象。 ## å¯¼å…¥æ¨¡å— ```ts import { mediaquery } from '@kit.ArkUI'; ``` ## mediaquery.matchMediaSync matchMediaSync(condition: string): MediaQueryListener 设置媒体查询的查询æ¡ä»¶ï¼Œå¹¶è¿”回对应的监å¬å¥æŸ„。 **å¡ç‰‡èƒ½åŠ›ï¼š** 从API version 12开始,该接å£æ”¯æŒåœ¨ArkTSå¡ç‰‡ä¸ä½¿ç”¨ã€‚ **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | --------- | ------ | ---- | ------------------------------------------------------------ | | condition | string | 是 | 媒体事件的匹é…æ¡ä»¶ï¼Œå…·ä½“å¯å‚考[媒体查询è¯æ³•è§„则](../../ui/arkts-layout-development-media-query.md#è¯æ³•è§„则)。 | **返回值:** | 类型 | 说明 | | ------------------ | -------------------------------------------- | | [MediaQueryListener](#mediaquerylistener) | 媒体事件监å¬å¥æŸ„,用于注册和去注册监å¬å›žè°ƒã€‚ | **示例:** ```ts import { mediaquery } from '@kit.ArkUI'; let listener:mediaquery.MediaQueryListener = this.getUIContext().getMediaQuery().matchMediaSync('(orientation: landscape)'); //监å¬æ¨ªå±äº‹ä»¶ ``` ## MediaQueryListener 媒体查询的å¥æŸ„,并包å«äº†ç”³è¯·å¥æŸ„æ—¶çš„é¦–æ¬¡æŸ¥è¯¢ç»“æžœã€‚åª’ä½“æŸ¥è¯¢æ ¹æ®è®¾ç½®çš„æ¡ä»¶è¯å¥ï¼Œæ¯”如'(width <= 600vp)',比较系统信æ¯ï¼Œè‹¥é¦–次查询时相关信æ¯æœªåˆå§‹åŒ–,matches返回false。 继承自[MediaQueryResult](#mediaqueryresult)。 **å¡ç‰‡èƒ½åŠ›ï¼š** 从API version 12开始,该类型支æŒåœ¨ArkTSå¡ç‰‡ä¸ä½¿ç”¨ã€‚ **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full ### on('change') on(type: 'change', callback: Callback<MediaQueryResult>): void 通过å¥æŸ„å‘对应的查询æ¡ä»¶æ³¨å†Œå›žè°ƒï¼Œå½“媒体属性å‘生å˜æ›´æ—¶ä¼šè§¦å‘该回调。 > **说明:** > > 注册的回调ä¸ä¸å…许进一æ¥è°ƒç”¨on或off。 **å¡ç‰‡èƒ½åŠ›ï¼š** 从API version 12开始,该接å£æ”¯æŒåœ¨ArkTSå¡ç‰‡ä¸ä½¿ç”¨ã€‚ **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | ----------------------------------------------------- | ---- | ------------------------ | | type | string | 是 | 必须填写å—符串'change'。 | | callback | Callback<[MediaQueryResult](#mediaqueryresult)> | 是 | å‘媒体查询注册的回调。 | **示例:** 详è§[off示例](#offchange)。 ### off('change') off(type: 'change', callback?: Callback<MediaQueryResult>): void 通过å¥æŸ„å‘对应的查询æ¡ä»¶å–消注册回调,当媒体属性å‘生å˜æ›´æ—¶ä¸å†è§¦å‘指定的回调。 **å¡ç‰‡èƒ½åŠ›ï¼š** 从API version 12开始,该接å£æ”¯æŒåœ¨ArkTSå¡ç‰‡ä¸ä½¿ç”¨ã€‚ **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full **å‚数:** | å‚æ•°å | 类型 | å¿…å¡« | 说明 | | -------- | -------------------------------- | ---- | ---------------------------------------------------------- | | type | string | 是 | 必须填写å—符串'change'。 | | callback | Callback<[MediaQueryResult](#mediaqueryresult)> | å¦ | 需è¦åŽ»æ³¨å†Œçš„回调,如果å‚数缺çœåˆ™åŽ»æ³¨å†Œè¯¥å¥æŸ„下所有的回调。 | **示例:** ```ts import { mediaquery } from '@kit.ArkUI'; let listener = mediaquery.matchMediaSync('(orientation: landscape)'); //监å¬æ¨ªå±äº‹ä»¶ function onPortrait(mediaQueryResult:mediaquery.MediaQueryResult) { if (mediaQueryResult.matches) { // do something here } else { // do something here } } listener.on('change', onPortrait) // 注册回调 listener.off('change', onPortrait) // 去å–消注册回调 ``` ## MediaQueryResult 用于执行媒体查询æ“作。 **å¡ç‰‡èƒ½åŠ›ï¼š** 从API version 12开始,该类型支æŒåœ¨ArkTSå¡ç‰‡ä¸ä½¿ç”¨ã€‚ **原å化æœåŠ¡API:** 从API version 11开始,该接å£æ”¯æŒåœ¨åŽŸå化æœåŠ¡ä¸ä½¿ç”¨ã€‚ **系统能力:** SystemCapability.ArkUI.ArkUI.Full ### 属性 | å称 | 类型 | å¯è¯» | å¯å†™ | 说明 | | ------- | ------- | ---- | ---- | -------------------- | | matches | boolean | 是 | å¦ | 是å¦ç¬¦åˆåŒ¹é…æ¡ä»¶ã€‚ | | media | string | 是 | å¦ | 媒体事件的匹é…æ¡ä»¶ã€‚ | ### 示例 > **说明:** > > 推è通过使用[UIContext](js-apis-arkui-UIContext.md#uicontext)ä¸çš„[getMediaQuery](js-apis-arkui-UIContext.md#getmediaquery)方法获å–当å‰UI上下文关è”çš„[MediaQuery](js-apis-arkui-UIContext.md#mediaquery)对象。 ```ts import { mediaquery } from '@kit.ArkUI'; @Entry @Component struct MediaQueryExample { @State color: string = '#DB7093' @State text: string = 'Portrait' listener = mediaquery.matchMediaSync('(orientation: landscape)') // 建议使用 this.getUIContext().getMediaQuery().matchMediaSync()æŽ¥å£ onPortrait(mediaQueryResult:mediaquery.MediaQueryResult) { if (mediaQueryResult.matches) { this.color = '#FFD700' this.text = 'Landscape' } else { this.color = '#DB7093' this.text = 'Portrait' } } aboutToAppear() { let portraitFunc = (mediaQueryResult: mediaquery.MediaQueryResult): void => this.onPortrait(mediaQueryResult) // 绑定回调函数 this.listener.on('change', portraitFunc); } aboutToDisappear() { // 解绑listenerä¸æ³¨å†Œçš„回调函数 this.listener.off('change'); } build() { Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Text(this.text).fontSize(24).fontColor(this.color) } .width('100%').height('100%') } } ```