0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙开发UI界面——@ohos.mediaquery (媒体查询)

王程 来源:jf_75796907 作者:jf_75796907 2024-02-22 16:46 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

导入模块

import mediaquery from '@ohos.mediaquery'

mediaquery.matchMediaSync

matchMediaSync(condition: string): MediaQueryListener

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

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

参数:

参数名 类型 必填 说明
condition string 媒体事件的匹配条件,具体可参考语法规则。

返回值:

类型 说明
MediaQueryListener 媒体事件监听句柄,用于注册和去注册监听回调。

示例:

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

MediaQueryListener

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

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

属性

名称 类型 可读 可写 说明
matches boolean 是否符合匹配条件。
media string 媒体事件的匹配条件。

on

on(type: ‘change’, callback: Callback): void

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

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

参数:

参数名 类型 必填 说明
type string 必须填写字符串’change’。
callback Callback 向媒体查询注册的回调

示例:

详见off示例。

off

off(type: ‘change’, callback?: Callback): void

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

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

参数名 类型 必填 说明
type string 必须填写字符串’change’。
callback Callback 需要去注册的回调,如果参数缺省则去注册该句柄下所有的回调。

示例:

import mediaquery from '@ohos.mediaquery'
  
  let listener = mediaquery.matchMediaSync('(orientation: landscape)'); //监听横屏事件
  function onPortrait(mediaQueryResult) {
      if (mediaQueryResult.matches) {
          // do something here
      } else {
          // do something here
      }
  }
  listener.on('change', onPortrait) // 注册回调
  listener.off('change', onPortrait) // 取消注册回调

MediaQueryResult

用于执行媒体查询操作。

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

属性

名称 类型 可读 可写 说明
matches boolean 是否符合匹配条件。
media string 媒体事件的匹配条件。

示例

import mediaquery from '@ohos.mediaquery'


@Entry
@Component
struct MediaQueryExample {
  @State color: string = '#DB7093'
  @State text: string = 'Portrait'
  listener = mediaquery.matchMediaSync('(orientation: landscape)')

  onPortrait(mediaQueryResult) {
    if (mediaQueryResult.matches) {
      this.color = '#FFD700'
      this.text = 'Landscape'
    } else {
      this.color = '#DB7093'
      this.text = 'Portrait'
    }
  }

  aboutToAppear() {
    let portraitFunc = this.onPortrait.bind(this) // bind current js instance
    this.listener.on('change', portraitFunc)
  }

  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      Text(this.text).fontSize(24).fontColor(this.color)
    }
    .width('100%').height('100%')
  }
}


审核编辑 黄宇


HT

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ui
    ui
    +关注

    关注

    0

    文章

    208

    浏览量

    22237
  • 鸿蒙
    +关注

    关注

    60

    文章

    2858

    浏览量

    45354
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【汇思博SEEK100开发板试用体验】在开发鸿蒙OS搭建QT开发环境

    ,为鸿蒙设备开发原生性能应用。Qt for HarmonyOS 的核心是一个 QPA 插件(Qt Platform Abstraction),其作用是将 Qt 的窗口系统与鸿蒙UI
    发表于 08-24 18:34

    鸿蒙应用px,vp,fp概念详解

    传统移动端开发方向,转到鸿蒙应用开发方向。 前端开发同学对于开发范式很熟悉,但是对于工作流程和开发
    的头像 发表于 07-07 11:48 1001次阅读
    <b class='flag-5'>鸿蒙</b>应用px,vp,fp概念详解

    媒体查询详解

    ;@ohos.mediaquery';通过matchMediaSync接口设置媒体查询条件,保存返回的条件监听句柄listener。例如监听横屏事件: let listener
    发表于 06-25 08:26

    UI开发概述

    组件是UI的必要元素,形成了在界面中的样子,由框架直接提供的称为系统组件,由开发者定义的称为自定义组件。系统内置组件包括按钮、单选框、进度条、文本等。开发者可以通过链式调用的方式设置
    发表于 06-24 06:36

    鸿蒙5开发宝藏案例分享---点击响应时延分析

    鸿蒙宝藏大发现!官方隐藏的实战案例,开发效率直接翻倍 ? 大家好呀!最近在折腾鸿蒙开发时,意外挖到了华为官方的 案例宝藏库 !原来HarmonyOS文档里藏了近百个场景化案例,覆盖了布
    发表于 06-12 17:01

    鸿蒙5开发宝藏案例分享---应用架构实战技巧

    大家好! 今天咱们聊聊鸿蒙开发中那些“官方文档提了但实际开发难找”的架构设计技巧。结合官方文档,我会用 真实代码案例+通俗讲解 ,帮你把分层架构和线程通信落地到项目里,告别“理论会了,代码不会
    发表于 06-12 16:14

    鸿蒙5开发宝藏案例分享---自由流转的拖拽多屏联动

    ? 【干货预警】鸿蒙开发宝藏案例大揭秘!手把手教你玩转常用功能**?** 大家好呀~,今天在扒拉鸿蒙文档的时候,突然发现官方竟然藏了一堆超实用的开发案例! ?** 之前总觉得
    发表于 06-03 18:50

    鸿蒙5开发宝藏案例分享---一多开发实例(地图导航)

    \')) Text(item.desc) .fontSize($r(\'app.float.list_desc_font_size\')) } }) 配合资源文件实现多端尺寸自适应,再也不用手动写媒体查询
    发表于 06-03 16:17

    鸿蒙5开发宝藏案例分享---一多开发实例(旅行订票)

    ? 鸿蒙开发宝藏大发现!一多开发实战案例解析(旅行订票篇) 大家好!今天在翻鸿蒙开发者文档时,意外发现了官方藏着一整片\"案例绿洲\"!尤其
    发表于 06-03 16:16

    鸿蒙5开发宝藏案例分享---一多开发实例(购物比价)

    弹窗 } ? 二、开发避坑指南(血泪经验) 在复现官方案例时,这几个重点要拿小本本记好: 布局三大心法 栅格系统:用%替代固定px 断点监听:@ohos.mediaquery神器 权重布局
    发表于 06-03 16:07

    基于RV1126开发板实现简单的UI开发示例

    本方案为最简单的UI开发示例,已为用户初步构建一个基本的应用工程;准备好我司的easyeai-api链接调用;准备好UI开发环境。其目的在于方便用户马上进行带有
    的头像 发表于 04-18 16:07 889次阅读
    基于RV1126<b class='flag-5'>开发</b>板实现简单的<b class='flag-5'>UI</b><b class='flag-5'>开发</b>示例

    OBOO鸥柏触摸屏一体查询机结合AI人工智能DeepSeek应用开发文档

    随着科技的飞速发展,AI智能技术已经广泛应用于各行各业。OBOO鸥柏作为专注室内室外网络广告屏,触摸屏一体查询机高端品牌定位,鸥柏触摸屏查询终端机作为现代信息查询的重要人机交互工具,与AI智能
    的头像 发表于 03-04 11:48 613次阅读
    OBOO鸥柏触摸屏一<b class='flag-5'>体查询</b>机结合AI人工智能DeepSeek应用<b class='flag-5'>开发</b>文档

    第二篇 RA8889 实现酷炫车载液晶仪表系列视频: UI界面介绍

    本系列文章介绍 RA8889 实现液晶仪表HMI UI界面,分为两大部分来介绍,本期介绍如何制作UI界面,其中包括使用PS软件制作静态类UI
    的头像 发表于 02-25 15:27 889次阅读
    第二篇 RA8889 实现酷炫车载液晶仪表系列视频: <b class='flag-5'>UI</b>类<b class='flag-5'>界面</b>介绍

    用DevEco Studio模拟器这些能力,没真机也能高效调测鸿蒙原生应用

    问题,如果UI界面中存在过度的布局计算,冗余的元素绘制,将会带来设备资源的大量开销,造成响应性能的衰退。 随着鸿蒙生态的快速发展,越来越多的开发者投身于
    的头像 发表于 01-08 16:04 1167次阅读
    用DevEco Studio模拟器这些能力,没真机也能高效调测<b class='flag-5'>鸿蒙</b>原生应用

    鸿蒙Flutter实战:14-现有Flutter 项目支持鸿蒙 II

    ,职责分离,平台抽象,不同平台组合打包,有效解决平台不一致问题 参考资料 鸿蒙Flutter实战:01-搭建开发环境 鸿蒙Flutter实战:09-现有Flutter项目支持鸿蒙 Fl
    发表于 12-26 14:59