HarmonyOS7 ArkUI 视频列表 - 封面卡片、播放量、关注按钮实战
文章目录前言从界面倒推代码交互入口在哪里代码里的重点片段 1toggleFollow(id: number) {片段 2likesDisplay(count: number): string {使用方式完整代码收个尾前言这篇不讲空概念直接从页面代码拆。能复用的不是某个颜色值而是状态、派生数据和布局之间的组织方式。它的主线是视频列表细节落在封面卡片、播放量、关注按钮。这些细节刚好能把页面状态、用户操作和组件刷新串起来。从界面倒推代码VideoFeedPage不是一个只展示静态内容的页面。它会根据用户点击、输入、切换或计时来改变界面所以阅读代码时可以先抓三条线观察点在这个案例里的表现| 页面主题 |视频列表|| 主要文案 |教程,3天前,设计,1天前,创意,5天前|| 常用组件 |Column,ForEach,Row,Scroll,Stack,Text|| 适合练习 | 状态驱动 UI、条件样式、列表渲染、事件回调 |交互入口在哪里ArkUI 的页面刷新依赖状态变化。下面这些State字段就是页面的“开关”和“数据源”不用手动找 DOM也不用自己通知某个控件刷新。状态字段类型我会怎么理解它videosVideoItem_75fu[]列表数据源通常会被ForEach消费activeCategorystring当前选中项决定高亮和内容切换searchTextstring用户输入值参与计算或提交一个经验先把State看完再看build()页面逻辑会清楚很多。否则很容易被一长串布局代码带偏。代码里的重点片段 1toggleFollow(id: number) {这段代码承担的是页面里的“判断”或“动作”把它从布局里抽出来后build()会清爽很多。后面要加新条件也不会到处翻 UI 代码。toggleFollow(id:number){this.videosthis.videos.map(v{if(v.idid){v.isFollowed!v.isFollowedreturnv}returnv})}片段 2likesDisplay(count: number): string {这段代码承担的是页面里的“判断”或“动作”把它从布局里抽出来后build()会清爽很多。后面要加新条件也不会到处翻 UI 代码。likesDisplay(count:number):string{returncount10000?(count/10000).toFixed(1)万:count}使用方式把下面代码放进 ArkTS 页面文件中即可运行。用于正式项目时我会继续把数据模型、卡片 Builder 和页面事件拆出去页面文件只负责组合。建议练习顺序先改状态字段 - 再改交互事件 - 最后调整 UI 样式 检查重点点击是否刷新、列表 key 是否稳定、条件样式是否集中管理这份代码可以继续扩展的方向把模拟数据替换成接口数据抽出复用卡片组件增加空状态和异常状态补充深色模式或主题色适配对输入类场景增加校验提示完整代码// VideoFeedPage - 视频列表封面卡片、播放量、关注按钮interfaceVideoItem_75fu{id:numbertitle:stringauthor:stringavatar:stringcoverColor:ResourceColor coverEmoji:stringviews:stringlikes:numberduration:stringcategory:stringisFollowed:booleanpublishTime:string}interfaceCategoryTab_i98l{key:stringlabel:string}EntryComponentstruct VideoFeedPage{Statevideos:VideoItem_75fu[][{id:1,title:HarmonyOS ArkTS 零基础入门教程 | 手把手教你开发第一个鸿蒙应用,author:鸿蒙技术派,avatar:,coverColor:#1E3A5F,coverEmoji:,views:18.6万,likes:3420,duration:23:45,category:教程,isFollowed:false,publishTime:3天前},{id:2,title:UI设计神技 | 10个让界面瞬间高级的小技巧99%的人不知道,author:UI大魔王,avatar:,coverColor:#3D1A78,coverEmoji:✨,views:45.2万,likes:8900,duration:12:30,category:设计,isFollowed:true,publishTime:1天前},{id:3,title:用代码画出星空 | p5.js 粒子系统实战演示,author:代码艺术家,avatar:,coverColor:#0A1628,coverEmoji:,views:7.3万,likes:1580,duration:18:22,category:创意,isFollowed:false,publishTime:5天前},{id:4,title:2024 最值得学的前端框架大盘点别再迷茫了,author:前端老炮儿,avatar:,coverColor:#1A3A1A,coverEmoji:,views:32.1万,likes:6200,duration:15:10,category:教程,isFollowed:true,publishTime:2天前},{id:5,title:从0到1搭建完整的后台管理系统 | Vue3 TypeScript 实战,author:全栈工程师小明,avatar:⚡,coverColor:#3A1A1A,coverEmoji:️,views:9.8万,likes:2100,duration:45:00,category:实战,isFollowed:false,publishTime:1周前},{id:6,title:设计师眼中的好代码 | 前端与UI如何高效协作,author:协作达人,avatar:,coverColor:#1A2A3A,coverEmoji:,views:5.6万,likes:890,duration:20:15,category:经验,isFollowed:false,publishTime:4天前}]StateactiveCategory:string推荐StatesearchText:stringprivatecategories:CategoryTab_i98l[][{key:推荐,label: 推荐},{key:教程,label: 教程},{key:设计,label: 设计},{key:实战,label:⚡ 实战},{key:创意,label:✨ 创意}]toggleFollow(id:number){this.videosthis.videos.map(v{if(v.idid){v.isFollowed!v.isFollowedreturnv}returnv})}likesDisplay(count:number):string{returncount10000?(count/10000).toFixed(1)万:count}getfilteredVideos():VideoItem_75fu[]{if(this.activeCategory推荐)returnthis.videosreturnthis.videos.filter(vv.categorythis.activeCategory)}BuildervideoCard(video:VideoItem_75fu){Column({space:0}){// 视频封面Stack({alignContent:Alignment.Bottom}){// 封面背景Column(){Text(video.coverEmoji).fontSize(60)}.width(100%).height(180).backgroundColor(video.coverColor).justifyContent(FlexAlign.Center).borderRadius({topLeft:12,topRight:12})// 时长标签Row(){Blank()Text(video.duration).fontSize(12).fontColor(#FFFFFF).padding({left:8,right:8,top:3,bottom:3}).backgroundColor(#000000AA).borderRadius(6)}.width(100%).padding({right:10,bottom:10})// 播放按钮圆形半透明Circle({width:50,height:50}).fill(#00000060).position({x:50%,y:50%}).translate({x:-25,y:-25-10})Text(▶).fontSize(18).fontColor(#FFFFFF).position({x:50%,y:50%}).translate({x:-8,y:-8-10})}.width(100%)// 视频信息Row({space:10}){// 作者头像Text(video.avatar).fontSize(24).width(40).height(40).textAlign(TextAlign.Center).backgroundColor(#F3F4F6).borderRadius(20)Column({space:4}){Text(video.title).fontSize(14).fontColor(#111827).maxLines(2).textOverflow({overflow:TextOverflow.Ellipsis}).lineHeight(20)Row({space:6}){Text(video.author).fontSize(12).fontColor(#6B7280)Text(·).fontSize(12).fontColor(#D1D5DB)Text(video.views次播放).fontSize(12).fontColor(#9CA3AF)Text(·).fontSize(12).fontColor(#D1D5DB)Text(video.publishTime).fontSize(12).fontColor(#9CA3AF)}}.layoutWeight(1).alignItems(HorizontalAlign.Start)}.width(100%).padding({left:12,right:12,top:10,bottom:6})// 底部互动栏Row({space:0}){Row({space:6}){Text().fontSize(14)Text(this.likesDisplay(video.likes)).fontSize(13).fontColor(#6B7280)}.layoutWeight(1)Row({space:6}){Text().fontSize(14)Text(评论).fontSize(13).fontColor(#6B7280)}.layoutWeight(1)Row({space:6}){Text(↗️).fontSize(14)Text(分享).fontSize(13).fontColor(#6B7280)}.layoutWeight(1)// 关注按钮Text(video.isFollowed?✓ 已关注: 关注).fontSize(13).fontColor(video.isFollowed?#6B7280:#FFFFFF).padding({left:14,right:14,top:6,bottom:6}).backgroundColor(video.isFollowed?#F3F4F6:#3B82F6).borderRadius(16).onClick(()this.toggleFollow(video.id))}.width(100%).padding({left:12,right:12,top:4,bottom:12})}.width(100%).backgroundColor(#FFFFFF).borderRadius(12).shadow({radius:6,color:#00000010,offsetX:0,offsetY:2}).clip(true)}build(){Column(){// 顶部搜索栏Row({space:10}){Row({space:8}){Text().fontSize(16).fontColor(#9CA3AF)Text(搜索视频、创作者...).fontSize(14).fontColor(#9CA3AF)Blank()}.layoutWeight(1).height(40).padding({left:14,right:14}).backgroundColor(#F3F4F6).borderRadius(20)Text().fontSize(22)Text().fontSize(22)}.width(100%).padding({left:16,right:16,top:50,bottom:12}).backgroundColor(#FFFFFF)// 分类 TabScroll(){Row({space:8}){ForEach(this.categories,(cat:CategoryTab_i98l){Text(cat.label).fontSize(14).fontColor(this.activeCategorycat.key?#FFFFFF:#374151).padding({left:16,right:16,top:8,bottom:8}).backgroundColor(this.activeCategorycat.key?#3B82F6:#F3F4F6).borderRadius(20).onClick((){this.activeCategorycat.key})})}.padding({left:16,right:16,bottom:10,top:4})}.scrollable(ScrollDirection.Horizontal).backgroundColor(#FFFFFF).border({width:{bottom:0.5},color:#F3F4F6})// 视频列表Scroll(){Column({space:14}){ForEach(this.filteredVideos,(video:VideoItem_75fu){this.videoCard(video)})}.padding({left:16,right:16,top:14,bottom:30})}.layoutWeight(1).backgroundColor(#F9FAFB)}.width(100%).height(100%).backgroundColor(#F9FAFB)}}收个尾这个案例可以当成一个小模板先把页面会变的东西放进状态再用函数或 Builder 处理重复逻辑最后让布局只关心展示。写 HarmonyOS7 页面时这个顺序通常比一上来堆 UI 更稳。

相关新闻

Solana高性能Token交易实现:从SPL标准到750TPS实战

Solana高性能Token交易实现:从SPL标准到750TPS实战

最近在区块链开发圈里,Solana 的性能表现成为了热门话题。特别是看到"5.6 Sol 七月将达 750 token/秒"这样的数据预测,很多开发者都在关注 Solana 网络在高并发场景下的实际表现。作为长期关注区块链技术演进的技术博主,我决定从开…

2026/7/27 8:31:26阅读更多 →
从开源项目到OpenAI:AI工程师的核心能力解析

从开源项目到OpenAI:AI工程师的核心能力解析

1. 从零到OpenAI:非典型AI研究员的逆袭之路 2024年AI领域最引人注目的故事之一,莫过于本科生Keller Jordan凭借开源项目直接入职OpenAI的经历。这个案例彻底颠覆了"必须有博士学位才能做AI研究"的传统认知,展示了技术社区中真实能力…

2026/7/27 8:31:26阅读更多 →
基于机器视觉的水果质量检测技术实践

基于机器视觉的水果质量检测技术实践

1. 水果质量检测的行业背景与挑战 水果作为全球农产品贸易中的重要商品,其质量直接决定了市场价格和消费者满意度。在传统的水果分选流水线上,主要依赖人工目检进行品质筛选,这种方式存在几个明显的痛点: 效率瓶颈 :…

2026/7/27 8:31:26阅读更多 →
Open Code Review:阿里内部AI代码审查工具开源

Open Code Review:阿里内部AI代码审查工具开源

如果你平时用Claude Code或Cursor对PR做代码审查,你大概率会遇到过这种事:改了一堆文件的PR丢进去,Agent只审了前三个文件就说"看起来没问题",报告的问题行号也对不上。你追着它说"再仔细看看第47行"&#xf…

2026/7/27 10:08:25阅读更多 →
电子检测产品出口热门市场认证要求详解:多国准入制度与标准对照

电子检测产品出口热门市场认证要求详解:多国准入制度与标准对照

一、电子检测产品的认证定位 电子检测产品涵盖万用表、示波器、频谱分析仪、气体检测仪、环境监测仪等测量与检测设备。这类产品在出口认证中有两个显著特征:一是作为测量仪器,部分产品涉及计量法制要求;二是作为电子电气设备,须满…

2026/7/27 10:08:25阅读更多 →
GitHub今日热榜 | 2026-07-27:阿里内部AI代码审查工具上榜

GitHub今日热榜 | 2026-07-27:阿里内部AI代码审查工具上榜

今天的榜单有一个有意思的现象:排名前四的项目全部涉及"替代现有方案"这个命题。蓝牙Mesh聊天要替代对互联网的依赖,AI给Agent用的浏览器要替代人手操控,自托管CMS要替代Webflow和WordPress,而阿里开源的AI代码审查工具…

2026/7/27 10:08:25阅读更多 →
终极Sunshine游戏串流服务器指南:如何打造你的私人游戏云

终极Sunshine游戏串流服务器指南:如何打造你的私人游戏云

终极Sunshine游戏串流服务器指南:如何打造你的私人游戏云 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine 想要在任何设备上畅玩PC游戏吗?Sunshine游戏串流服…

2026/7/27 10:08:25阅读更多 →
AI Agent任务管理架构演进与实践指南

AI Agent任务管理架构演进与实践指南

1. Agent任务管理架构的演进背景 在现代AI系统中,Agent(智能代理)正变得越来越复杂。单个Agent通过ReAct(推理-行动)循环可以处理简单任务,但当面对需要开发完整功能模块(如包含前后端和数据库的…

2026/7/27 10:08:25阅读更多 →
扩散模型高级引导机制:原理、实现与优化

扩散模型高级引导机制:原理、实现与优化

1. 扩散模型中的高级引导机制解析 在生成式AI领域,扩散模型已成为图像生成任务的主流架构。但如何精确控制生成内容的质量和语义,一直是研究者和实践者面临的挑战。引导机制(Guidance Mechanisms)作为扩散模型的核心控制手段&…

2026/7/27 10:06:25阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/27 1:14:34阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/27 1:14:52阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/27 1:14:56阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:24阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:24阅读更多 →
2007-2023年各市区县生态文明建设示范区DID

2007-2023年各市区县生态文明建设示范区DID

数据简介 自改革开放以来,我国依赖高投入、高资源消耗和高污染等传统发展模式实现了经济短期内的快速增长, 然而这也导致了严重的生态环境危机。因此,国家有力于推动企业高质量经济发展,协同生态保护的方针,从而从201…

2026/7/27 0:00:24阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/26 19:05:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/26 19:05:21阅读更多 →