HarmonyOS应用开发实战:萌宠日记 - 宠物信息卡片设计与阴影效果
前言卡片式设计是移动应用中最常用的信息展示方式之一。在萌宠日记的首页中宠物信息卡片是最核心的视觉元素它展示了宠物头像、名称、性别、品种、年龄等关键信息并通过阴影效果营造出层次感和立体感。本文将从萌宠日记的宠物信息卡片实现出发深入解析卡片布局设计、阴影效果配置、圆形头像裁剪、以及卡片式设计的通用模式。一、宠物信息卡片整体设计1.1 卡片结构┌─────────────────────────────────────┐ │ ┌──────┐ ┌────────────────────┐ │ │ │ │ │ 豆豆 ♂ │ │ │ │ 头像 │ │ 比熊犬 · 男孩 │ │ │ │ 64×64 │ │ 2岁3个月 │ │ │ │ │ │ │ │ │ └──────┘ └────────────────────┘ │ │ ✏️ 编辑 │ └─────────────────────────────────────┘1.2 完整代码// HomePage.ets — 宠物信息卡片 // 宠物信息卡片 Column() { Row({ space: 12 }) { // 宠物头像 Column() { Text() .fontSize(40) } .width(64) .height(64) .backgroundColor(#FFF3E0) .borderRadius(32) .justifyContent(FlexAlign.Center) // 宠物信息 Column({ space: 4 }) { Row({ space: 8 }) { Text(豆豆) .fontSize(20) .fontWeight(FontWeight.Bold) .fontColor(#333333) Text(♂) .fontSize(12) .fontColor(#42A5F5) .backgroundColor(#E3F2FD) .padding({ left: 6, right: 6, top: 2, bottom: 2 }) .borderRadius(8) } Text(比熊犬 · 男孩) .fontSize(13) .fontColor(#999999) Text(2岁3个月) .fontSize(13) .fontColor(#999999) } .alignItems(HorizontalAlign.Start) Blank() // 编辑按钮 Text(✏️) .fontSize(20) .fontColor(#F5A623) .onClick(() { if (this.onNavigateToPetProfile) { this.onNavigateToPetProfile() } }) } .width(100%) .padding(16) } .width(100%) .backgroundColor(#FFFFFF) .borderRadius(16) .margin({ left: 16, right: 16 }) .shadow({ radius: 4, color: #10000000, offsetY: 2 })提示卡片的外层 Column 负责白色背景、圆角、阴影内层 Row 负责内容布局。这种内外层分离的设计模式让卡片样式和内容逻辑互不干扰。二、卡片布局设计2.1 布局层次分析层级组件职责外层Column卡片容器白色背景、圆角、阴影、左右 margin内层Row({ space: 12 })水平布局头像 信息 编辑按钮左列Column头像区域圆形裁剪、浅橙背景中列Column({ space: 4 })信息区域名称、品种、年龄右列Blank() Text弹性占位 编辑按钮2.2 间距设计// 卡片内外间距 Row({ space: 12 }) { // 头像与信息间距 12vp // ... } .padding(16) // 卡片内边距 16vp // 卡片外边距 .margin({ left: 16, right: 16 }) // 左右留边 16vp间距位置值作用卡片内边距16vp内容与卡片边框的距离卡片外边距16vp卡片与屏幕边缘的距离头像-信息间距12vp头像与文字区域的间距文字行间距4vp信息行之间的间距三、圆形头像实现3.1 圆形裁剪原理// 圆形头像 — 通过 borderRadius 实现 Column() { Text() // 头像图标当前为占位空文本 .fontSize(40) } .width(64) // 宽度 64 .height(64) // 高度 64与宽度相同 .backgroundColor(#FFF3E0) // 浅橙色背景 .borderRadius(32) // 圆角半径 宽/2 32 → 正圆形 .justifyContent(FlexAlign.Center) // 内容居中圆形裁剪的公式borderRadius width / 2 当 width height 时头像尺寸宽高borderRadius效果小头像48×4824小圆形中头像64×6432✅ 萌宠日记使用大头像80×8040宠物档案页使用超大100×10050个人中心使用3.2 头像占位设计// 当前为文字占位后续可替换为真实图片 Column() { Image($r(app.media.pet_avatar)) .width(64) .height(64) .borderRadius(32) .objectFit(ImageFit.Cover) }四、阴影效果配置4.1 shadow 属性// 卡片阴影效果 .shadow({ radius: 4, // 阴影模糊半径越大越模糊 color: #10000000, // 阴影颜色RGBA 格式 offsetX: 0, // 水平偏移 offsetY: 2 // 垂直偏移向下偏移 2vp })4.2 阴影参数详解参数类型萌宠日记值说明radiusnumber4阴影模糊半径值越大阴影范围越广colorColor#10000000阴影颜色RGBA 格式10% 不透明度的黑色offsetXnumber未设置默认 0阴影水平偏移量offsetYnumber2阴影垂直偏移量向下偏移4.3 阴影颜色格式// RGBA 格式#AARRGGBB // AA 透明度00-FFRR 红色GG 绿色BB 蓝色 #10000000 // 10% 透明度的黑色最轻微的阴影 #20000000 // 12.5% 透明度的黑色轻微阴影 #40000000 // 25% 透明度的黑色中等阴影 #80000000 // 50% 透明度的黑色较重阴影五、卡片圆角与背景5.1 圆角配置.borderRadius(16) // 统一圆角四个角都是 16vp5.2 圆角模式模式语法效果统一圆角borderRadius(16)四个角相同分别设置borderRadius({ topLeft: 16, topRight: 16, bottomLeft: 16, bottomRight: 16 })每个角独立控制上圆角borderRadius({ topLeft: 16, topRight: 16 })仅上方圆角下圆角borderRadius({ bottomLeft: 16, bottomRight: 16 })仅下方圆角5.3 白色背景.backgroundColor(#FFFFFF) // 纯白背景与页面背景色 #FFF8F0 形成对比六、信息布局细节6.1 名称 性别标签Row({ space: 8 }) { Text(豆豆) // 宠物名称 .fontSize(20) .fontWeight(FontWeight.Bold) .fontColor(#333333) Text(♂) // 性别标签 .fontSize(12) .fontColor(#42A5F5) .backgroundColor(#E3F2FD) .padding({ left: 6, right: 6, top: 2, bottom: 2 }) .borderRadius(8) }6.2 信息行设计信息行内容字号颜色字重第一行名称 性别标签20fp 12fp深灰 蓝色加粗 正常第二行品种 · 性别13fp灰色正常第三行年龄13fp灰色正常七、编辑按钮交互7.1 编辑按钮设计Text(✏️) .fontSize(20) .fontColor(#F5A623) .onClick(() { if (this.onNavigateToPetProfile) { this.onNavigateToPetProfile() // 触发父组件导航 } })7.2 交互反馈交互状态视觉反馈实现方式默认橙色fontColor(#F5A623)点击页面跳转onClick回调长按无可扩展可添加onLongClick八、卡片复用模式8.1 通用卡片组件// 通用卡片组件 — 可复用的卡片样式 Component export struct Card { Prop backgroundColor: string #FFFFFF Prop borderRadius: number 16 build() { Column() { // 卡片内容通过 slot 传入 } .width(100%) .backgroundColor(this.backgroundColor) .borderRadius(this.borderRadius) .shadow({ radius: 4, color: #10000000, offsetY: 2 }) } }8.2 萌宠日记中的卡片模式萌宠日记中多处使用卡片式设计页面卡片用途共用样式首页宠物信息卡片白色背景、16px 圆角、阴影首页今日记录卡片同上宠物档案基本信息卡片同上宠物档案成长记录卡片同上社区活动横幅卡片同上九、卡片阴影性能9.1 阴影渲染性能阴影复杂度性能影响优化建议少量卡片≤ 5 个无影响—多个阴影叠加轻微减少阴影层叠大 radius 阴影轻微避免 radius 20动态阴影变化中等减少动画频率9.2 性能优化// 性能优化使用轻量阴影 .shadow({ radius: 4, // 小 radius性能更好 color: #10000000, // 低透明度减少渲染开销 offsetY: 2 // 小偏移量 })十、卡片设计最佳实践10.1 设计原则有序列表 — 卡片设计的 5 个原则信息分层最重要的信息放在卡片顶部名称次要信息放在下方品种、年龄视觉层次通过字号、字重、颜色区分信息层级交互可点可点击元素如编辑按钮应有明确的视觉提示间距统一卡片内外间距保持一致性推荐 16vp阴影适度阴影不宜过重轻微的阴影即可营造层次感10.2 萌宠日记卡片设计总结设计要素值设计意图背景色#FFFFFF纯白与页面背景区分圆角16vp柔和、现代感阴影radius: 4, color: #10000000, offsetY: 2轻微阴影增加层次感内边距16vp内容与卡片边缘的呼吸空间外边距16vp卡片与屏幕边缘的距离总结本文从萌宠日记的宠物信息卡片设计出发深入解析了卡片式布局的完整实现卡片结构外层容器 内层内容 Row 布局圆形头像borderRadius 实现圆形裁剪阴影效果shadow 属性的四个参数详解圆角与背景统一圆角、白色背景、对比度信息布局名称、性别标签、品种、年龄的层级设计编辑按钮交互反馈与导航触发卡片复用通用卡片组件的设计模式性能优化阴影渲染性能的考量卡片式设计是 ArkUI 中最常用的 UI 模式之一掌握它的设计细节能显著提升应用的视觉品质。下一篇我们将深入性别标签与状态徽章组件解析标签式组件的设计与实现。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源阴影属性参考https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-shadow-effectborder-radius 属性https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-universal-attributes-borderColumn 组件参考https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-container-columnRow 组件参考https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-container-row卡片设计指南https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/design-cards颜色使用规范https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/color-usage字体排版指南https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/typography交互反馈设计https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/interaction-feedback

相关新闻

G-Helper:华硕笔记本轻量级控制神器,5大场景重塑硬件管理体验

G-Helper:华硕笔记本轻量级控制神器,5大场景重塑硬件管理体验

G-Helper:华硕笔记本轻量级控制神器,5大场景重塑硬件管理体验 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Viv…

2026/10/5 18:45:34 阅读更多 →
零基础做漫画自媒体:2026年三款主流AI漫画生成工具实测对比

零基础做漫画自媒体:2026年三款主流AI漫画生成工具实测对比

很多想入局漫画自媒体的新手,都卡在同一个瓶颈:有故事、有脚本、有脑洞,但不会手绘,出图慢、成本高、无法日更。 2026年,AI漫画生成技术已经完成迭代。截至2026年中,AI漫画生成工具已从“单图出图”阶段迈入…

2026/9/28 14:20:24 阅读更多 →
VR-Reversal:三步实现3D VR视频免费转2D的终极方案

VR-Reversal:三步实现3D VR视频免费转2D的终极方案

VR-Reversal:三步实现3D VR视频免费转2D的终极方案 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址: https://gitcode.com/gh_mirro…

2026/10/3 11:19:34 阅读更多 →

最新新闻

Django+Flask智能营销系统:银行数字化转型实战

Django+Flask智能营销系统:银行数字化转型实战

1. 项目背景与核心价值在金融数字化转型浪潮中,银行业务营销正从传统人工经验驱动转向数据智能驱动。这个基于DjangoFlask的智能营销系统,正是利用爬虫技术获取多维金融数据,通过大数据分析生成客户画像,最终以可视化大屏呈现营销…

2026/10/14 10:10:46 阅读更多 →
从混乱到有序:打造本地优先的游戏库管理工具

从混乱到有序:打造本地优先的游戏库管理工具

最近我把游戏相关的一堆零散信息从脑子里和表格里拎了出来,整合成一个跑在局域网里的本地资料库小工具,代号 AnyPS5 。起因特别朴素:每次想开一个新游戏,我都得先花几分钟去回忆这台主机还剩多少空间、某张光盘到底通关没有、存…

2026/10/14 10:10:46 阅读更多 →
PHP服装购物系统开发实战:LAMP架构与电商解决方案

PHP服装购物系统开发实战:LAMP架构与电商解决方案

1. 项目概述:PHP木兮服装购物系统 这套基于PHP开发的服装购物系统,是我在电商领域摸爬滚打多年后沉淀下来的实战作品。系统采用经典的LAMP架构(LinuxApacheMySQLPHP),特别适合中小型服装商家快速搭建线上销售渠道。源码…

2026/10/14 10:10:46 阅读更多 →
CATIA零件设计必备:点线面创建方法详解与避坑指南

CATIA零件设计必备:点线面创建方法详解与避坑指南

简介:这套培训课件名为《点线面的创建》,是一份面向初学者的演示文稿教材。内容围绕零件设计工作台展开,重点讲解参考点、参考线和参考平面的构建方法。课件先介绍进入工作台的几种方式,然后系统演示点的生成:可通过坐…

2026/10/14 10:10:46 阅读更多 →
深入理解DiT:视频生成背后的统一架构

深入理解DiT:视频生成背后的统一架构

Sora刚发布那阵子,整个视频生成圈子几乎可以用"炸锅"来形容。大家看完官方放出的几个demo,第一反应是画质真高、时长真长、物理规律像模像样,第二反应才是琢磨:这玩意到底是怎么做的?OpenAI没发技术报告&…

2026/10/14 10:10:46 阅读更多 →
对话式地图助手落地实践:语言模型到地图动作的适配层设计

对话式地图助手落地实践:语言模型到地图动作的适配层设计

从聊天机器人一脚踩进地图场景的那段时间,我被一个问题折磨了很久:语言模型再能聊,跟地图引擎之间始终隔着一道墙。用户在对话框里说"帮我找滨河公园附近评分高的粤菜馆,然后规划一条地铁过去的路线",前端却…

2026/10/14 10:09:42 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →