当前位置: 首页 > news >正文

HarmonyOS 6 Marquee组件使用示例文档

文章目录

    • 组件基础信息
      • 1. 组件定义
      • 2. 核心能力
    • 核心API
      • 1. 组件接口
      • 2. MarqueeOptions 配置项
      • 3. 核心属性
      • 4. 生命周期事件
    • 完整代码示例
      • 1. 依赖导入
      • 2. 组件状态与变量定义
      • 3. 时间格式化工具函数
      • 4. 页面构建与组件布局
      • 核心逻辑
    • 功能效果说明
    • 总结

组件基础信息

1. 组件定义

Marquee是HarmonyOS提供的文本跑马灯滚动组件,用于实现单行文本自动横向滚动效果,适用于公告栏、新闻头条、状态提示、动态信息展示等需要文字滚动的场景,支持控制滚动速度、循环次数、起始位置及动态更新内容。

2. 核心能力

  • 控制文本滚动启停、速度、循环次数
  • 支持文本滚动策略、字体缩放、字体样式自定义
  • 提供滚动开始、回弹、结束生命周期回调
  • 支持动态修改滚动文本,实时更新效果
  • 可与TextClock等组件联动展示动态数据

核心API

1. 组件接口

Marquee(options:MarqueeOptions)

创建跑马灯组件实例,通过MarqueeOptions配置基础参数。

2. MarqueeOptions 配置项

参数名类型说明
startboolean控制跑马灯是否启动滚动
stepnumber每次滚动的像素距离,控制滚动速度
loopnumber滚动循环次数,默认无限循环
fromStartboolean是否从文本开头位置开始滚动
srcstring跑马灯显示的文本内容

3. 核心属性

属性名类型说明
marqueeUpdateStrategyMarqueeUpdateStrategy文本更新后的滚动策略
allowScaleboolean允许文本跟随系统字体大小缩放
fontFamilystring设置文本字体,可固定不跟随主题
fontSize / fontColor / fontWeight-文本样式配置

4. 生命周期事件

事件名触发时机
onStart()跑马灯动画开始时触发
onBounce()文本滚动到边界回弹时触发
onFinish()跑马灯动画完成所有循环时触发

完整代码示例

1. 依赖导入

import{LengthMetrics}from'@kit.ArkUI';

导入基础UI工具类,支持组件尺寸单位相关能力。

2. 组件状态与变量定义

@Entry@Componentstruct MarqueeExample{@Statestart:boolean=false;// 控制跑马灯启停@Statesrc:string='';// 动态拼接的时间文本@StatemarqueeText:string='Running Marquee';// 固定前缀文本privatefromStart:boolean=true;// 从文本开头滚动privatestep:number=10;// 滚动步长(速度)privateloop:number=Number.POSITIVE_INFINITY;// 无限循环controller:TextClockController=newTextClockController();// 时钟控制器
  • 使用@State装饰器定义响应式变量,修改后自动刷新UI
  • loop设置为无限循环,实现持续滚动效果
  • TextClockController用于联动控制时钟启动

3. 时间格式化工具函数

convert2time(value:number):string{letdate=newDate(Number(value+'000'));lethours=date.getHours().toString().padStart(2,'0');letminutes=date.getMinutes().toString().padStart(2,'0');letseconds=date.getSeconds().toString().padStart(2,'0');returnhours+":"+minutes+":"+seconds;}

将时间戳转换为HH:mm:ss格式字符串,用于动态更新跑马灯文本。

4. 页面构建与组件布局

build(){Flex({direction:FlexDirection.Column,alignItems:ItemAlign.Center,justifyContent:FlexAlign.Center}){// 跑马灯核心组件Marquee({start:this.start,step:this.step,loop:this.loop,fromStart:this.fromStart,src:this.marqueeText+this.src,// 固定文本+动态时间拼接}).marqueeUpdateStrategy(MarqueeUpdateStrategy.PRESERVE_POSITION)// 文本更新保持滚动位置.width('300vp').height('80vp').fontColor('#FFFFFF').fontSize('48fp').allowScale(true)// 允许跟随系统字体大小缩放.fontWeight(700).fontFamily('HarmonyOS Sans')// 固定字体,不跟随主题.backgroundColor('#182431').margin({bottom:'40vp'})// 生命周期监听.onStart(()=>{console.info('Succeeded in completing the onStart callback of marquee animation');}).onBounce(()=>{console.info('Succeeded in completing the onBounce callback of marquee animation');}).onFinish(()=>{console.info('Succeeded in completing the onFinish callback of marquee animation');})// 启动按钮Button('Start').onClick(()=>{this.start=true;// 启动跑马灯this.controller.start();// 启动时钟})// 文本时钟组件TextClock({timeZoneOffset:-8,controller:this.controller}).format('hms').onDateChange((value:number)=>{this.src=this.convert2time(value);// 时间变化时更新跑马灯文本})}.width('100%').height('100%')}

运行效果如图:

核心逻辑

  1. 跑马灯文本动态更新

    • 固定文本Running Marquee+ 实时时间src拼接展示
    • TextClock时间变化时触发onDateChange,自动更新跑马灯内容
  2. 滚动策略

    • marqueeUpdateStrategy(MarqueeUpdateStrategy.PRESERVE_POSITION):文本更新时保持当前滚动位置,不重置滚动起点
  3. 字体适配

    • allowScale(true)fontSize使用fp单位,跟随系统字体大小缩放
    • fontFamily('HarmonyOS Sans'):固定使用系统默认字体,不随主题切换
  4. 双组件联动

    • 点击Start按钮同时启动跑马灯TextClock
    • 时钟时间实时同步到跑马灯文本,实现动态滚动效果
  5. 生命周期日志

    • 滚动开始、边界回弹、滚动完成时输出日志,便于调试

功能效果说明

  1. 初始状态:跑马灯静止,显示默认文本Running Marquee
  2. 点击启动
    • 跑马灯开始无限滚动
    • TextClock启动计时,时间实时追加到跑马灯文本后
  3. 滚动表现
    • 文本滚动速度由step=10控制
    • 文本更新不中断滚动位置,平滑展示动态时间
    • 字体支持系统缩放,样式固定清晰
  4. 日志输出:滚动生命周期事件触发时打印日志

总结

Marquee组件是HarmonyOS中实现文本滚动的核心组件,支持启停控制、速度调节、动态文本、生命周期监听、字体适配、多组件联动等完整能力。本文档示例代码可直接运行,通过与TextClock联动实现了动态滚动时钟效果,覆盖了跑马灯组件90%以上的常用场景,是HarmonyOS 6开发中的标准实践方案。

如果这篇文章对你有帮助,欢迎点赞、收藏、关注,你的支持是持续创作的动力

http://www.jsqmd.com/news/717100/

相关文章:

  • 从Java单体到K8s边缘云原生:某国家级数字农场平台三年演进路径(含ServiceMesh在田间网关的轻量化落地实践)
  • Windows 11 LTSC系统微软商店安装终极指南:3分钟恢复完整应用生态
  • 旋转夹爪功能优势是什么?教你选择靠谱厂家的实用技巧 - 品牌2026
  • 2026 年抠图怎么制作:4 种实用方案 vs 微信小程序零门槛方案,附新手抠图教程
  • 别再让镜头畸变毁了你的测量精度!Halcon相机标定与畸变矫正保姆级教程
  • PyTorch C++扩展编译踩坑记:Win11下找不到cl.exe的终极排查与修复指南
  • 3个场景教你快速上手百度网盘命令行工具:告别繁琐的网页操作!
  • 裁员潮下的生存指南:测试工程师的不可替代性建设
  • 2026年3月比较好的人物雕塑现货厂家口碑推荐,铜雕/动物雕塑/铜鼎/人物雕塑/铸铜雕塑/铜钟,人物雕塑供应商口碑推荐 - 品牌推荐师
  • 如何监控索引使用情况_mysql索引统计
  • Nginx-RTMP-Win32 深度解析:Windows 平台流媒体服务器核心技术实现
  • Prim就是加点法,而Kruskal是加边法
  • SPIRAN ART SUMMONER与OpenCL加速:GPU计算性能优化
  • RWKV7-1.5B-G1A模型解析:从计算机组成原理视角看高效推理
  • 脑机接口新手指南:如何用深度学习(CNN/LSTM/Transformer)搞定SSVEP信号分类?
  • 头歌实验平台避坑指南:Python产生式系统动物识别实验,标点符号中英文格式导致测试不通过的解决方案
  • Arm嵌入式C/C++库架构与多线程优化实践
  • 发布管理化技术中的发布测试发布部署发布验证
  • Geniatech SOM-3568-SMARC模块解析与工业应用
  • 毕业设计:基于springboot的精品在线试题库系统(源码)
  • 如何高效配置网易云音乐插件管理器:BetterNCM安装器完整指南
  • B站缓存视频合并终极指南:如何一键将碎片视频转为完整MP4
  • 5分钟免费解锁PotPlayer实时字幕翻译:让外语视频秒变中文的终极教程
  • 3分钟终极指南:如何免费永久激活Windows和Office的完整教程
  • 告别手动删除!Element UI/Plus 上传组件文件列表状态同步的完整指南(含自定义模板)
  • CF2226C
  • 口碑好的做日单围巾厂家
  • Golang怎么实现日志记录_Golang如何用zap或logrus搭建结构化日志系统【实战】
  • 试写Spring-boot的RestController
  • 昆仑万维第一季营收25.7亿:同比增46% 净亏8.9亿 艾捷科芯刚融资5.5亿