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:42 阅读更多 →
《指环王》三部曲4K观影指南:技术解析与深度解读

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

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

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

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

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

2026/7/24 11:00:42 阅读更多 →

最新新闻

AI小说生成API测评与优化实战指南

AI小说生成API测评与优化实战指南

1. 小说AI开发者的API选择困境 作为一名长期从事AI小说生成工具开发的工程师,我深知选择API平台时的纠结。去年我们团队在开发新一代故事生成器时,曾花费整整三个月时间对比测试市面上主流的7个API服务商。每次看到技术群里新人问"哪个AI写小说API最…

2026/7/24 11:05:44 阅读更多 →
HarmonyOS Repeat 状态串行怎么办:中式美食长列表 key、复用和行内状态怎么拆

HarmonyOS Repeat 状态串行怎么办:中式美食长列表 key、复用和行内状态怎么拆

问题先说清楚 列表页最怕一种问题:筛选前第二行是展开的,筛选后展开状态跑到了别的行;购物清单里只勾选了“鸡蛋”,结果“番茄”也像被勾上了;排序后卡片上的局部输入框还保留着上一条数据的草稿。 这类问题看起来像 A…

2026/7/24 11:05:44 阅读更多 →
智能客服系统优化:对话状态引擎与动态知识图谱实践

智能客服系统优化:对话状态引擎与动态知识图谱实践

1. 项目背景与核心痛点去年接手公司客服系统改造项目时,我发现传统智能客服存在三个致命缺陷:机械式问答平均耗时2.4分钟/次、转人工率高达68%、问题重复率超过40%。某次抽查录音显示,用户询问"订单未出库"时,系统连续5…

2026/7/24 11:05:44 阅读更多 →
惠州正宗陈皮去哪买:关注核心产区源

惠州正宗陈皮去哪买:关注核心产区源

惠州正宗陈皮去哪买:关注核心产区源与溯源体系许多生活在惠州的朋友常有这样的疑问:惠州正宗陈皮去哪买?面对市场上品牌众多、价格跨度大且外观难以辨别的现状,普通消费者往往感到无从下手。需要明确的是,本文旨在提供…

2026/7/24 11:05:44 阅读更多 →
Oracle AI Database 26ai:智能数据库的技术革新与应用实践

Oracle AI Database 26ai:智能数据库的技术革新与应用实践

1. Oracle AI Database 26ai的核心定位与技术革新 Oracle AI Database 26ai标志着数据库技术从传统数据处理向智能数据服务的范式转变。作为Oracle Database 23ai的迭代升级版本,26ai版本最显著的特征是将AI能力深度集成到数据库内核,实现了从"Data…

2026/7/24 11:05:44 阅读更多 →
深入解析MSPM0 UART:从寄存器配置到低功耗通信实战

深入解析MSPM0 UART:从寄存器配置到低功耗通信实战

1. 项目概述:深入MSPM0的UART核心 在嵌入式开发领域,串口通信(UART)就像设备与外界对话的“嘴巴”和“耳朵”,其稳定性和效率直接决定了整个系统的通信能力。很多开发者拿到一款新的MCU,比如TI的MSPM0系列&…

2026/7/24 11:04:44 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

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

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

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

2026/7/24 0:00:29 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

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

月新闻