HarmonyOS7跑马灯列表页实战:多条 Marquee 组合与速度标签
文章目录前言先看这个页面解决了什么问题页面结构速览关键状态是怎么组织的业务逻辑最值得看的函数第一段重点代码状态与数据入口第二段重点代码核心交互逻辑使用方法把页面跑起来之后怎么操作这个实现为什么值得借鉴可以继续优化的地方完整代码最后总结前言做 跑马灯列表页 这类页面时最怕两件事一是业务信息一多就乱二是代码写着写着失去层次。这个案例的价值恰恰在于它把常见功能浓缩进一页适合拿来做完整练习。先看这个页面解决了什么问题这个案例主要解决三件事把跑马灯列表页的核心数据集中托管在组件状态中。让用户在一个页面里完成查看、筛选、操作、反馈的完整闭环。用相对克制的 ArkUI 组件组合把业务信息分层展示出来。从实用角度看这种页面通常都不是孤立存在的它往往会挂在应用的某个一级入口下面。也就是说示例里很多处理方式都可以直接迁移到真实项目。页面结构速览先不急着看细节先把页面结构建立起来区域作用代码里的体现顶部区域提供标题与导航返回RowImageText内容主体展示核心信息与主操作区Column/List/Scroll等组合统计或辅助区展示聚合信息、筛选项或说明文字计算属性与状态联动行为入口处理新增、切换、确认、推进等动作事件函数和按钮点击逻辑这一页里出现的主要数据类型有MarqueeItem。关键状态是怎么组织的这类页面能不能写稳关键往往不在布局而在状态设计。当前案例里比较值得关注的状态包括isShow从用户点击顺序出发把页面的真实使用流程拆开讲。如果你自己扩展这个页面建议优先判断哪些数据属于长期状态需要持续保留在页面上的数据比如列表内容、筛选条件。瞬时状态只在某一次交互中短暂生效比如弹窗开关、输入框值、当前选中项。派生状态不必单独保存而是通过计算属性实时推导出来。业务逻辑最值得看的函数当前页面里建议优先读下面这些方法if我更建议你按照“先看输入再看输出最后看状态修改”的顺序去理解这些函数。这样读代码比从头到尾硬看要轻松很多。第一段重点代码状态与数据入口这部分代码定义了页面最核心的数据源是理解整个案例的起点。StateisShow:booleantrueprivatemarqueeItems:MarqueeItem[][{title:快讯,content:市场快讯科技股集体上涨指数创年内新高,speed:8,color:#F44336,bgColor:#FFEBEE},{title:要闻,content:国内要闻全国两会召开多项政策利好发布,speed:4,color:DEMO_THEME_COLOR,bgColor:#E8EAF6},{title:国际,content:国际新闻全球气候大会达成减排新协议,speed:5,color:PRESET_COLORS[1].value,bgColor:#E3F2FD},{title:财经,content:财经资讯央行宣布降准 0.5 个百分点,speed:6,color:PRESET_COLORS[0].value,bgColor:#E8F5E9},{title:体育,content:体育新闻中国队在世界杯预选赛中取得关键胜利,speed:3,color:PRESET_COLORS[2].value,bgColor:#FFF3E0},{title:娱乐,content:娱乐头条热门电影票房突破 50 亿大关,speed:7,color:#9C27B0,bgColor:#F3E5F5},{title:科技,content:科技前沿AI 大模型能力持续突破新应用层出不穷,speed:5,color:#009688,bgColor:#E0F2F1},]build(){Column(){if(this.isShow){Column({space:16}){Text(跑马灯列表).fontSize(20).fontWeight(FontWeight.Bold).fontColor(DEMO_THEME_COLOR)这里有几个很实用的判断标准State字段通常就是页面的驱动中心。如果一个字段一改界面就会立即跟着变化那它大概率就应该放进状态里。如果某个值完全可以通过已有状态算出来就更适合做计算属性。第二段重点代码核心交互逻辑真正决定这个页面“好不好用”的往往不是布局而是交互逻辑是否顺手。下面这段代码就是关键部分/** * 跑马灯列表页 - 跑马灯列表 */import{PRESET_COLORS,generateListItems,DEMO_BG_COLOR,DEMO_CARD_COLOR,DEMO_THEME_COLOR,DEMO_SUBTEXT_COLOR}from./typesinterfaceMarqueeItem{title:stringcontent:stringspeed:numbercolor:stringbgColor:string}EntryComponentstruct MarqueeListFeed{StateisShow:booleantrueprivatemarqueeItems:MarqueeItem[][{title:快讯,content:市场快讯科技股集体上涨指数创年内新高,speed:8,color:#F44336,bgColor:#FFEBEE},{title:要闻,content:国内要闻全国两会召开多项政策利好发布,speed:4,color:DEMO_THEME_COLOR,bgColor:#E8EAF6},可以重点注意三件事这个函数接收了什么输入。它到底修改了哪些状态。修改之后页面上哪些区域会同步刷新。把这三点串起来基本就能搞懂页面的交互链路。使用方法把页面跑起来之后怎么操作如果你想验证这个案例是否真正理解到位可以按下面顺序手动操作一遍先进入页面观察顶部信息和默认展示内容。再尝试切换筛选项、按钮或标签看列表是否会立即变化。接着执行一次主操作比如新增、切换、标记、选择或推进。最后回头观察统计区、提示区或状态区有没有同步更新。如果这一整套流程都能说清楚说明你已经不只是“看懂了界面”而是看懂了它的运行机制。这个实现为什么值得借鉴从 ArkUI 工程角度看这个案例至少有三点值得保留状态粒度比较克制没有把所有东西都拆成独立变量。视图结构相对清楚顶部、内容区、辅助区和操作区分得开。业务函数命名直白阅读和后续维护成本都比较低。尤其是在做教学示例时这种写法很重要。因为读者不是来欣赏技巧的而是来确认“这个页面到底怎么搭起来”。可以继续优化的地方如果你准备把这个页面继续扩展成正式项目我会优先改这几件事把数据模型和页面组件拆开避免页面文件承担过多职责。把重复使用的卡片、标签、行项抽成独立组件。给关键操作补上更明确的异常处理、空状态和边界提示。如果涉及远程数据再补上加载态和接口层封装。完整代码下面保留案例完整代码方便你直接对照学习、复制和重构。/** * 跑马灯列表页 - 跑马灯列表 */import{PRESET_COLORS,generateListItems,DEMO_BG_COLOR,DEMO_CARD_COLOR,DEMO_THEME_COLOR,DEMO_SUBTEXT_COLOR}from./typesinterfaceMarqueeItem{title:stringcontent:stringspeed:numbercolor:stringbgColor:string}EntryComponentstruct MarqueeListFeed{StateisShow:booleantrueprivatemarqueeItems:MarqueeItem[][{title:快讯,content:市场快讯科技股集体上涨指数创年内新高,speed:8,color:#F44336,bgColor:#FFEBEE},{title:要闻,content:国内要闻全国两会召开多项政策利好发布,speed:4,color:DEMO_THEME_COLOR,bgColor:#E8EAF6},{title:国际,content:国际新闻全球气候大会达成减排新协议,speed:5,color:PRESET_COLORS[1].value,bgColor:#E3F2FD},{title:财经,content:财经资讯央行宣布降准 0.5 个百分点,speed:6,color:PRESET_COLORS[0].value,bgColor:#E8F5E9},{title:体育,content:体育新闻中国队在世界杯预选赛中取得关键胜利,speed:3,color:PRESET_COLORS[2].value,bgColor:#FFF3E0},{title:娱乐,content:娱乐头条热门电影票房突破 50 亿大关,speed:7,color:#9C27B0,bgColor:#F3E5F5},{title:科技,content:科技前沿AI 大模型能力持续突破新应用层出不穷,speed:5,color:#009688,bgColor:#E0F2F1},]build(){Column(){if(this.isShow){Column({space:16}){Text(跑马灯列表).fontSize(20).fontWeight(FontWeight.Bold).fontColor(DEMO_THEME_COLOR)Text(多个跑马灯组成列表每条速度不同).fontSize(13).fontColor(DEMO_SUBTEXT_COLOR).width(100%)Column({space:10}){ForEach(this.marqueeItems,(item:MarqueeItem,index?:number){Row({space:8}){Text(item.title).fontSize(10).fontWeight(FontWeight.Bold).fontColor(#FFFFFF).backgroundColor(item.color).padding({left:8,right:8,top:3,bottom:3}).borderRadius(4).flexShrink(0)Text(item.speedx).fontSize(9).fontColor(#999999).flexShrink(0)Marquee({start:true,step:item.speed,loop:-1,fromStart:true,src:item.content}).layoutWeight(1).height(30).fontSize(12).fontColor(item.color).backgroundColor(item.bgColor).borderRadius(15)}.width(100%)})}.width(100%).padding(16).backgroundColor(DEMO_CARD_COLOR).borderRadius(12)// 速度说明Row({space:6}){Text(提示).fontSize(11).fontWeight(FontWeight.Bold).fontColor(#FF6B35)Text(每条跑马灯使用不同的 step 值数字越大滚动越快).fontSize(11).fontColor(DEMO_SUBTEXT_COLOR).layoutWeight(1)}.width(100%).padding(10).backgroundColor(#FFF8E1).borderRadius(8)}.alignItems(HorizontalAlign.Start)}Text(跑马灯列表页 - 跑马灯列表).fontSize(12).fontColor(#999999).margin({top:12})}.width(100%).height(100%).backgroundColor(DEMO_BG_COLOR).padding(16)}}最后总结跑马灯列表页 这个案例并不靠复杂技巧取胜它更像一个结构扎实、逻辑完整的业务页面样板。把这篇文章里的状态设计、函数组织和页面分层吃透之后你再去写同类型功能速度会明显快很多。

相关新闻

HarmonyOS7公告样式跑马灯实战:公告条视觉包装

HarmonyOS7公告样式跑马灯实战:公告条视觉包装

文章目录前言先看这个页面解决了什么问题页面结构速览关键状态是怎么组织的业务逻辑最值得看的函数第一段重点代码:状态与数据入口第二段重点代码:核心交互逻辑使用方法:把页面跑起来之后怎么操作这个实现为什么值得借鉴可以继续优化的地方完…

2026/7/23 7:47:33 阅读更多 →
影刀RPA 文件批量重命名与分类整理自动化

影刀RPA 文件批量重命名与分类整理自动化

影刀RPA 文件批量重命名与分类整理自动化 作者:林焱 什么情况用 电脑用久了,文件夹里乱七八糟——下载的文件没改名、照片按相机编号命名、同事发来的文件命名规则不统一。想整理又觉得几百个文件手动改太费劲。 用RPA做文件整理,效率惊人…

2026/7/23 7:55:58 阅读更多 →
HarmonyOS7多行文字跑马灯实战:多文本块排布与滚动

HarmonyOS7多行文字跑马灯实战:多文本块排布与滚动

文章目录前言先看这个页面解决了什么问题页面结构速览关键状态是怎么组织的业务逻辑最值得看的函数第一段重点代码:状态与数据入口第二段重点代码:核心交互逻辑使用方法:把页面跑起来之后怎么操作这个实现为什么值得借鉴可以继续优化的地方完…

2026/7/23 7:14:04 阅读更多 →

最新新闻

游戏账号交易APP定制开发游戏账号交易系统制作

游戏账号交易APP定制开发游戏账号交易系统制作

随着游戏行业规模增加,热度起来以后,目前游戏账号交易需求量也在随着游戏热度上涨,像螃蟹、氪金兽、盼之等一些知名的游戏账号交易的平台业务量也在增加。像一些小的账号交易工作室业务量也在增加,随着单量的增加,再用…

2026/7/23 17:51:21 阅读更多 →
CMU 15-213 CSAPP:网络编程与 Web 服务器的底层构建(Network)

CMU 15-213 CSAPP:网络编程与 Web 服务器的底层构建(Network)

写在前面: 前面我们探讨了内存、汇编、异常控制流和本地 I/O,现在,我们要把视线投向外部世界。 网络编程其实并不神秘,在 Unix 的“万物皆文件”哲学下,网络连接不过就是一个特殊的文件描述符(Socket fd&am…

2026/7/23 17:51:21 阅读更多 →
有没有不易触发 AI 检测、适合学生使用的论文助手?实测靠谱工具深度盘点

有没有不易触发 AI 检测、适合学生使用的论文助手?实测靠谱工具深度盘点

每到毕业季、课程论文提交节点,很多同学都会陷入双重焦虑:知网、维普查重重复率居高不下,好不容易降完重,又被学校新版 AIGC 人工智能内容检测系统标记高疑似率,直接面临导师打回、学术审核预警的风险。市面上绝大多数…

2026/7/23 17:51:21 阅读更多 →
排列与组合介绍

排列与组合介绍

2026/7/23 17:51:21 阅读更多 →
条件概率介绍

条件概率介绍

2026/7/23 17:51:21 阅读更多 →
TM4C129 UART模块深度解析:从寄存器配置到DMA与中断优化

TM4C129 UART模块深度解析:从寄存器配置到DMA与中断优化

1. TM4C129LNCZAD UART模块深度解析通用异步收发器(UART)是嵌入式开发中最基础、最核心的通信接口之一,几乎每个项目都会用到。它不像SPI或IC那样需要时钟线同步,仅凭两根线(TX和RX)就能实现全双工通信&…

2026/7/23 17:50:21 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻