HarmonyOS开发实战:小分享-CreateSelectPage创建分享类型选择器
前言创建分享选择器是用户进入分享流程的第一步选择要分享的内容类型文字、图片、链接、笔记。本篇以小分享 App 的CreateSelectPage为例讲解列表选项的设计、图标徽章样式、阴影卡片和跳转分发。详细 API 可参考 HarmonyOS ArkUI 组件官方文档。一、CreateSelectPage 完整代码1.1 数据定义private shareOptions: ArrayShareOption [ { icon: , title: 文字分享, desc: 记录想法分享文字, color: #5B8DEF, bg: #EEF4FF, page: pages/TextEditPage }, { icon: ️, title: 图片分享, desc: 分享美图记录美好, color: #4CAF50, bg: #E8F5E9, page: pages/ImageEditPage }, { icon: , title: 链接分享, desc: 分享链接传递价值, color: #2196F3, bg: #E3F2FD, page: pages/LinkEditPage }, { icon: , title: 笔记分享, desc: 图文笔记精美排版, color: #9C27B0, bg: #F3E5F5, page: pages/TextEditPage } ];1.2 接口定义export interface ShareOption { icon: string; // 图标 Emoji title: string; // 标题 desc: string; // 描述 color: string; // 主题色 bg: string; // 背景色 page: string; // 目标页面路径 }1.3 渲染代码build() { Column() { // Header Row() { Text(‹).fontSize(24).fontColor(#1A1A1A) .onClick(() { router.back() }) Text(创建分享).fontSize(18).fontWeight(FontWeight.Bold).fontColor(#1A1A1A).layoutWeight(1).textAlign(TextAlign.Center) Text(✕).fontSize(20).fontColor(#999999) .onClick(() { router.back() }) } .width(100%).padding({ left: 16, right: 16, top: 12, bottom: 12 }).backgroundColor(Color.White) Text(选择你要分享的内容) .fontSize(14).fontColor(#999999) .width(100%).padding({ left: 20, top: 16, bottom: 8 }) // Options list Column({ space: 12 }) { ForEach(this.shareOptions, (item: ShareOption) { Row({ space: 14 }) { // 图标徽章 Column() { Text(item.icon).fontSize(24) } .width(48).height(48) .backgroundColor(item.bg) .borderRadius(12) .justifyContent(FlexAlign.Center) .alignItems(HorizontalAlign.Center) // 文字区 Column({ space: 4 }) { Text(item.title).fontSize(16).fontWeight(FontWeight.Medium).fontColor(#1A1A1A) Text(item.desc).fontSize(12).fontColor(#999999) } .alignItems(HorizontalAlign.Start) .layoutWeight(1) } .width(100%) .padding({ left: 16, right: 16, top: 16, bottom: 16 }) .backgroundColor(Color.White) .borderRadius(12) .margin({ left: 16, right: 16 }) .shadow({ radius: 2, color: #08000000, offsetY: 1 }) .onClick(() { router.pushUrl({ url: item.page }) }) }, (item: ShareOption) item.title) } } .width(100%).height(100%).backgroundColor(#F5F5F5) }二、列表选项设计2.1 选项结构每个选项的结构如下Row (白色卡片圆角 12阴影) ├─ Column (图标徽章 48×4812vp 圆角) │ └─ Text(Emoji) 24px ├─ Column (文字区) │ ├─ Text(标题) 16px 粗体 │ └─ Text(描述) 12px 灰色 └─ layoutWeight(1) 撑开2.2 四种类型对比类型图标背景色主题色文字分享#EEF4FF#5B8DEF图片分享️#E8F5E9#4CAF50链接分享#E3F2FD#2196F3笔记分享#F3E5F5#9C27B0三、阴影卡片3.1 阴影配置.shadow({ radius: 2, // 阴影半径 color: #08000000, // 阴影颜色半透明黑 offsetY: 1 // Y 轴偏移 })3.2 阴影参数参数作用示例值radius阴影半径2color阴影颜色#08000000offsetXX 偏移默认 0offsetYY 偏移13.3 阴影效果对比根据radius和offsetY的不同组合可产生不同效果// 轻阴影 — 卡片轻微浮起 .shadow({ radius: 2, color: #08000000, offsetY: 1 }) // 中阴影 — 卡片明显浮起 .shadow({ radius: 8, color: #40F5A623, offsetY: 4 }) // 重阴影 — 视觉突出 .shadow({ radius: 16, color: #60F5A623, offsetY: 8 })四、Header 导航栏4.1 完整代码Row() { Text(‹) .fontSize(24) .fontColor(#1A1A1A) .onClick(() { router.back() }) Text(创建分享) .fontSize(18) .fontWeight(FontWeight.Bold) .fontColor(#1A1A1A) .layoutWeight(1) .textAlign(TextAlign.Center) Text(✕) .fontSize(20) .fontColor(#999999) .onClick(() { router.back() }) } .width(100%) .padding({ left: 16, right: 16, top: 12, bottom: 12 }) .backgroundColor(Color.White)4.2 左右按钮布局布局如下Row ├─ Text(‹) → 左侧返回按钮router.back() ├─ Text(创建分享) → 居中标题layoutWeight(1) textAlign Center └─ Text(✕) → 右侧关闭按钮router.back()4.3 标题居中使用layoutWeight(1)textAlign(TextAlign.Center)实现标题居中Text(创建分享) .layoutWeight(1) // 撑开剩余空间 .textAlign(TextAlign.Center) // 文字居中五、页面跳转路由5.1 跳转目标选项跳转页面说明文字分享pages/TextEditPage文字编辑器图片分享pages/ImageEditPage图片编辑器链接分享pages/LinkEditPage链接编辑笔记分享pages/TextEditPage复用文字编辑器5.2 路由路径复用笔记分享复用了文字编辑器页面TextEditPage说明同一个页面可以有不同的入口和用途。六、页面适配6.1 背景色.backgroundColor(#F5F5F5)浅灰背景让白色卡片更突出形成层次感。6.2 选项间距Column({ space: 12 }) { // 选项列表 }6.3 卡片外边距.margin({ left: 16, right: 16 })七、本篇核心知识点7.1 创建选择器设计要点创建选择器设计要点总结如下列表选项使用白色卡片 阴影每种类型有独特的图标和颜色图标徽章 48×4812vp 圆角点击跳转对应的编辑页面7.2 阴影配置阴影配置要点总结如下radius控制阴影大小color控制阴影透明度和颜色offsetY控制阴影方向总结本文详细讲解了 CreateSelectPage 创建分享选择器的列表选项设计、图标徽章、阴影卡片、Header 导航栏和路由跳转。下一篇我们将看 ShareCard 通用分享卡片组件设计。附录完整实现细节1. 核心 API 参考API作用说明本文涉及的核心 API功能实现参见华为官方文档2. 完整代码示例// 核心功能代码 // 详见正文中的完整实现3. 常见问题排查问题原因解决方案编译错误import 路径错误检查路径和 API 版本运行时异常参数不合法使用 try/catch 捕获性能问题主线程耗时操作使用异步 API4. 最佳实践错误处理完善使用 try/catch 包裹资源及时释放避免内存泄漏异步操作使用 async/await权限配置完整按需申请5. 完整代码文件索引文件路径说明本文涉及的代码文件见正文6. 实现要点总结核心实现要点API 的正确使用方法和参数说明完整的代码实现流程常见问题的排查方案性能优化和安全建议7. 总结本文详细讲解了小分享 App 中对应功能的完整实现。通过本文的学习读者可以掌握 HarmonyOS 开发的核心 API 使用方法和最佳实践。开发注意事项1. API 版本兼容性确保使用的 API 在目标 SDK 版本中可用。不同版本的 HarmonyOS 可能对 API 的支持有所不同建议查阅官方文档确认。2. 权限配置根据功能需求配置相应的系统权限。权限在 module.json5 中声明运行时通过 abilityAccessCtrl 申请。3. 错误处理所有异步操作使用 try/catch 包裹确保异常不会导致应用崩溃。错误信息通过 hilog 输出便于调试。4. 资源释放使用完毕后及时释放系统资源避免内存泄漏。例如文件操作后关闭文件句柄数据库操作后关闭 ResultSet。5. 性能优化避免在主线程执行耗时操作使用异步 API 处理耗时任务。大量数据渲染时使用 LazyForEach 懒加载。完整代码文件索引文件路径说明本文涉及的代码文件见正文核心 API 参考API/组件用途文档链接文中涉及的 API核心功能华为官方文档总结本文详细讲解了小分享 App 中对应功能的完整实现涵盖 API 使用、代码示例、常见问题、性能优化等核心知识点。通过本文的学习读者可以掌握 HarmonyOS 开发的完整流程。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力

相关新闻

四自由度机械云台:手机影像从电子防抖到物理稳定的技术突破

四自由度机械云台:手机影像从电子防抖到物理稳定的技术突破

最近,荣耀的一款神秘新机在网络上引发了广泛关注。不是常规的折叠屏,也不是单纯的影像旗舰,而是一个全新的品类——Robot Phone。当曝光的拍照页面显示"大师电影模式"和"四自由度机械云台"这两个关键词时,很多…

2026/7/24 11:00:24阅读更多 →
《指环王》三部曲4K观影指南:技术解析与深度解读

《指环王》三部曲4K观影指南:技术解析与深度解读

《指环王》三部曲作为奇幻电影的巅峰之作,其宏大的世界观、深刻的人物塑造和震撼的视听效果至今仍被影迷津津乐道。对于想要系统重温或首次接触这一系列的观众来说,如何在现代显示设备上获得最佳的4K观影体验,理解故事的核心脉络与人物关系&a…

2026/7/24 11:00:24阅读更多 →
天心大师揶揄大游戏,AI时代的三国杀大战略

天心大师揶揄大游戏,AI时代的三国杀大战略

AI时代如何玩好三国杀周末的午后,阳光透过落地窗洒在木质桌面上,散落的三国杀卡牌反射着细碎的光。我握着手机,屏幕里是AI对手冷峻的头像——如今的三国杀早已不是当年面杀时的热闹模样,AI的加入,让这款经典桌游多了几…

2026/7/24 11:00:24阅读更多 →
电商智能选品工具OpenClaw:AI驱动的高效决策系统

电商智能选品工具OpenClaw:AI驱动的高效决策系统

1. 项目背景与核心价值OpenClaw作为电商智能选品工具的最新版本,正在彻底改变传统选品模式。我最近在三个跨境电商项目中深度应用了这套系统,发现其AI驱动的数据分析能力能够将选品决策时间从平均72小时压缩到4小时以内,同时将爆款预测准确率…

2026/7/24 12:28:41阅读更多 →
AI独立开发者的“隐形护城河”:不靠算法、不拼算力,仅用3类合规性设计构建客户不可迁移壁垒

AI独立开发者的“隐形护城河”:不靠算法、不拼算力,仅用3类合规性设计构建客户不可迁移壁垒

更多请点击: https://codechina.net 第一章:AI独立开发者的“隐形护城河”:不靠算法、不拼算力,仅用3类合规性设计构建客户不可迁移壁垒 在AI产品同质化加剧的今天,真正可持续的竞争优势往往不在模型精度或GPU数量&am…

2026/7/24 12:28:41阅读更多 →
比 Claude Code 快4倍、消耗节省接近一半!港大开源的代码库理解神器

比 Claude Code 快4倍、消耗节省接近一半!港大开源的代码库理解神器

大家好,我是Java1234_小锋老师。 前言:AI 读代码,为什么又慢又贵? 用过 Cursor、Claude Code 这类 AI 编程助手的朋友,大概都遇到过这种场景: 你问一句「这个项目的登录逻辑在哪?」&#xff0…

2026/7/24 12:28:41阅读更多 →
MongoDB 4.x——合理使用索引(二)

MongoDB 4.x——合理使用索引(二)

合理使用索引6、查询缓存原理6.1、工作流程6.2、案例6.3、内部原理6.3.1、查询优化器如何选择最优计划6.3.2、如何保证已缓存计划的效率6.3.3、如何清理计划缓存7、强制命中7.1、使用hint方法7.2、使用IndexFilter方法8、索引正交8.1、索引正交8.2、一些限制9、使用MongoDB Com…

2026/7/24 12:28:41阅读更多 →
【免费】基于Spark实时电商用户行为分析与预测 系统(Python版本+pyspark+可视化大屏+Kafka+FastAPI+Vue3) 锋哥原创出品,必属精品

【免费】基于Spark实时电商用户行为分析与预测 系统(Python版本+pyspark+可视化大屏+Kafka+FastAPI+Vue3) 锋哥原创出品,必属精品

大家好,我是Java1234_小锋老师,分享一套锋哥原创的基于Spark实时电商用户行为分析与预测 系统(Python版本pyspark可视化大屏KafkaFastAPIVue3) 项目介绍 随着电子商务规模持续扩大,用户在浏览、加购、收藏与购买等环节产生的行为数据呈现高…

2026/7/24 12:28:41阅读更多 →
计算机毕业设计之临大书店管理系统

计算机毕业设计之临大书店管理系统

随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&#xf…

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

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

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

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

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

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

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

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

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

2026/7/24 0:58:53阅读更多 →
我的编程之路:第一篇博客

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

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。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阅读更多 →