鸿蒙多功能工具箱开发实战(三)-分类页面与工具卡片组件
鸿蒙多功能工具箱开发实战(三)-分类页面与工具卡片组件前言工具卡片是应用的核心UI组件承载着工具的展示和入口功能。本文将详细讲解如何设计一个美观、交互友好的工具卡片组件以及如何使用Grid网格布局实现分类页面的展示。一、工具卡片设计分析1.1 功能需求展示工具图标、名称、描述支持自定义主题色点击跳转到对应工具页面视觉效果圆角、阴影、点击态1.2 UI设计图 1 亲戚称呼计算器┌─────────────────────────────┐ │ │ │ ‍‍‍ │ │ │ │ 亲戚称呼计算器 │ │ │ │ 计算亲戚关系的称呼 │ │ │ └─────────────────────────────┘二、工具卡片组件实现2.1 组件定义创建components/ToolCard.ets/** * 工具卡片组件 */Componentexportstruct ToolCard{Propname:stringPropicon:stringPropdescription:stringPropcolor:string#4A90E2onCardClick:()void(){}build(){Column(){// 图标区域Column(){Text(this.icon).fontSize(40)}.width(60).height(60).borderRadius(30).backgroundColor(this.color20).justifyContent(FlexAlign.Center).margin({top:16})// 名称Text(this.name).fontSize(16).fontWeight(FontWeight.Medium).fontColor(#333333).margin({top:12})// 描述Text(this.description).fontSize(12).fontColor(#999999).margin({top:4,bottom:16}).maxLines(2).textOverflow({overflow:TextOverflow.Ellipsis})}.width(100%).backgroundColor(#FFFFFF).borderRadius(12).shadow({radius:8,color:#1A000000,offsetY:2}).onClick((){this.onCardClick()})}}图 2 亲戚计算页面2.2 关键技术点解析Prop 装饰器Prop用于父组件向子组件单向传递数据// 子组件定义Componentexportstruct ToolCard{Propname:stringPropicon:string}// 父组件使用ToolCard({name:亲戚称呼计算器,icon:‍‍‍})Prop vs Link 区别装饰器数据流向使用场景Prop父 → 子单向展示数据Link父 ↔ 子双向需要修改父组件数据颜色透明度处理// 字符串拼接16进制透明度.backgroundColor(this.color20)// #4A90E2 → #4A90E22016进制透明度参考100%: FF 90%: E6 80%: CC 70%: B2 60%: 99 50%: 80 40%: 66 30%: 4D 20%: 33 10%: 1A三、Grid网格布局3.1 Grid基本用法Grid(){GridItem(){Text(Item 1)}GridItem(){Text(Item 2)}GridItem(){Text(Item 3)}}.columnsTemplate(1fr 1fr)// 两列等宽.rowsGap(16)// 行间距.columnsGap(16)// 列间距.width(100%).height(300)3.2 列模板详解// 两列等宽.columnsTemplate(1fr 1fr)// 三列等宽.columnsTemplate(1fr 1fr 1fr)// 固定宽度 自适应.columnsTemplate(100px 1fr)3.3 使用ForEach渲染Grid(){ForEach(this.toolList,(tool:ToolItem){GridItem(){ToolCard({name:tool.name,icon:tool.icon,description:tool.description,color:tool.color,onCardClick:(){router.pushUrl({url:tool.route})}})}})}.columnsTemplate(1fr 1fr).rowsGap(16).columnsGap(16)四、分类页面实现4.1 计算工具页面import{ToolCard}from../components/ToolCardimportrouterfromohos.routerComponentexportstruct CalculatorPage{build(){Column(){Text(计算工具).fontSize(24).fontWeight(FontWeight.Bold).margin({top:20,bottom:20}).width(100%).padding({left:20})Grid(){GridItem(){ToolCard({name:亲戚称呼计算器,icon:‍‍‍,description:计算亲戚关系的称呼,color:#4A90E2,onCardClick:(){router.pushUrl({url:pages/calculator/RelativeCalculator})}})}GridItem(){ToolCard({name:日期计算器,icon:,description:计算日期间隔,color:#50C878,onCardClick:(){router.pushUrl({url:pages/calculator/DateCalculator})}})}GridItem(){ToolCard({name:开发进行中,icon:,description:更多工具开发中...,color:#B8B8B8,onCardClick:(){}})}}.columnsTemplate(1fr 1fr).rowsGap(16).columnsGap(16).width(100%).padding({left:16,right:16,bottom:20}).layoutWeight(1)}.width(100%).height(100%)}}4.2 使用ForEach简化代码Componentexportstruct ConvertPage{privateconvertTools[{name:长度换算,icon:,description:米、英尺等,color:#3498DB,route:pages/convert/LengthConvert},{name:重量换算,icon:⚖️,description:千克、磅等,color:#E67E22,route:pages/convert/WeightConvert},{name:面积换算,icon:,description:平方米、亩等,color:#1ABC9C,route:pages/convert/AreaConvert}]build(){Column(){Text(换算工具).fontSize(24).fontWeight(FontWeight.Bold).margin({top:20,bottom:20}).width(100%).padding({left:20})Grid(){ForEach(this.convertTools,(tool){GridItem(){ToolCard({name:tool.name,icon:tool.icon,description:tool.description,color:tool.color,onCardClick:(){router.pushUrl({url:tool.route})}})}})GridItem(){ToolCard({name:开发进行中,icon:,description:更多工具开发中...,color:#B8B8B8,onCardClick:(){}})}}.columnsTemplate(1fr 1fr).rowsGap(16).columnsGap(16).width(100%).padding({left:16,right:16,bottom:20}).layoutWeight(1)}.width(100%).height(100%)}}五、开发进行中占位卡片5.1 设计目的给用户持续更新的期待感填充网格空白保持视觉平衡可添加点击提示功能5.2 带提示弹窗版本GridItem(){ToolCard({name:开发进行中,icon:,description:更多工具开发中...,color:#B8B8B8,onCardClick:(){AlertDialog.show({title:敬请期待,message:新功能正在紧张开发中敬请期待,autoCancel:true,alignment:DialogAlignment.Center})}})}六、小结本文详细讲解了工具卡片组件和分类页面的实现核心要点✅ Prop 实现父子组件单向数据传递✅ Grid GridItem 实现网格布局✅ ForEach 循环渲染工具列表✅ 颜色透明度处理技巧✅ 文本溢出处理✅ 开发进行中占位卡片设计下一篇文章将讲解路由导航与页面跳转的实现。系列文章导航下期预告鸿蒙多功能工具箱开发实战(四)-路由导航与页面跳转

相关新闻

Android USB OTG可以直接读取相机照片吗?一文讲透Camera Connect开发原理

Android USB OTG可以直接读取相机照片吗?一文讲透Camera Connect开发原理

很多开发者在接到摄影类 App 项目时,第一反应都是:手机支持 USB OTG,那是不是插上相机,就能直接读取照片?实际开发之后才发现:答案并没有这么简单。今天结合实际项目经验,聊聊 Android USB OTG …

2026/7/23 23:13:59阅读更多 →
蛋白组学检测伯远生物蛋白组学检测

蛋白组学检测伯远生物蛋白组学检测

蛋白组学检测伯远生物蛋白组学检测 伯远生物是国家级专精特新小巨人企业,国家级重点实验室,牵头多项省部级重大专项,公司科研技术人员500(硕博占比40%以上),作为功能基因研究综合性平台, 15年技…

2026/7/23 23:13:59阅读更多 →
IP 子网批量规划计算器——园区网规划不用再手算网段了

IP 子网批量规划计算器——园区网规划不用再手算网段了

做园区网、酒店、企业组网,地址规划这步最磨人。一个大网段要按楼层、功能区拆成几十上百个子网,每个配 VLAN、网关,最后还得整理成竣工台账。以前我手工算,掩码广播容易错,VLAN 和网段还老对不上,台账一行…

2026/7/23 23:13:59阅读更多 →
STELLA自进化LLM在生物医学研究的应用与实现

STELLA自进化LLM在生物医学研究的应用与实现

1. 项目背景与核心价值STELLA项目代表了当前生物医学研究与人工智能交叉领域的前沿探索。这个自进化的大型语言模型(LLM)智能体系统,正在改变传统生物医学研究的范式。作为一名长期关注AI在生命科学领域应用的从业者,我见证了这类系统从概念验证到实际落…

2026/7/24 0:32:11阅读更多 →
信息系统管理工程师-信息技术发展之计算机硬件与网络全解析

信息系统管理工程师-信息技术发展之计算机硬件与网络全解析

一、引言信息技术发展是软考中级信息系统管理工程师考试的基础模块,在上午客观题中占比约 15%-20%,其中计算机硬件、计算机软件、计算机网络是核心考查内容。本模块知识起源于 1946 年第一台通用计算机 ENIAC 的诞生,历经 70 余年演进&#x…

2026/7/24 0:32:11阅读更多 →
视频理解——从3D Conv到Tube Transformer,算力黑洞的探索史

视频理解——从3D Conv到Tube Transformer,算力黑洞的探索史

为啥说"大的"?因为视频数据太特么大了。一张 224x224 的图算起来轻松,一段 10 秒的 1080p 视频每秒 30 帧,那就是 300 张图,像素量是单张图的 300 倍。处理视频,本质上是在处理一个三维信号——高度、宽度、…

2026/7/24 0:32:11阅读更多 →
OpenClaw:本地化开源AI助手的部署与应用指南

OpenClaw:本地化开源AI助手的部署与应用指南

1. OpenClaw 项目概述OpenClaw 是一款运行在本地设备上的开源 AI 个人助手,支持 macOS、Windows 和 Linux 三大主流操作系统。与常见的云端 AI 服务不同,OpenClaw 的设计理念强调"数据不出本地",所有对话记录、技能插件和用户偏好都…

2026/7/24 0:32:11阅读更多 →
FoundationMotion:自监督学习颠覆动作识别技术

FoundationMotion:自监督学习颠覆动作识别技术

1. 项目概述:FoundationMotion的突破性意义 英伟达与MIT联合实验室最新发布的FoundationMotion框架,正在颠覆计算机视觉领域对运动理解的认知。这个仅有轻量级参数规模的模型,在无需任何人工标注数据的情况下,实现了与720亿参数大…

2026/7/24 0:32:11阅读更多 →
AI如何革新学术写作:书匠策AI全流程解析

AI如何革新学术写作:书匠策AI全流程解析

1. 学术写作的痛点与AI解决方案作为一名在科研领域摸爬滚打多年的"老油条",我深知论文写作过程中的种种煎熬。从文献综述的浩如烟海,到实验数据的反复验证;从格式规范的吹毛求疵,到语言表达的精准打磨——每一个环节都足…

2026/7/24 0:30:11阅读更多 →
Go语言静态资源打包方案对比与实践指南

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

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

2026/7/23 0:56:31阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

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

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

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

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

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

2026/7/23 0:56:31阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:06阅读更多 →
【LeetCode 54】螺旋矩阵

【LeetCode 54】螺旋矩阵

问题描述: 解法: 1、模拟(参考自【LeetCode 54】螺旋矩阵-CSDN博客) int *spiralOrder(int **matrix, int matrixSize, int *matrixColSize, int *returnSize) {static const int dirs[4][2] {{0, 1}, {1, 0}, {0, -1}, {-1, …

2026/7/24 0:00:06阅读更多 →
2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

知春路不相信模型领先今年WAIC大会,昔日AI六小龙来了五家,分别是Kimi、阶跃星辰、Minimax、百川智能、零一万物。连放弃基模的百川和零一万物都来了,唯一缺席的竟是近几个月来风光无限的智谱。(DeepSeek一直不参加)WAI…

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

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

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

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

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

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

2026/7/23 18:58:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

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

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

2026/7/23 18:58:18阅读更多 →