news 2026/7/24 14:04:54

HarmonyOS开发实战:小分享-SharePreviewPage分享预览与多平台分享按钮

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HarmonyOS开发实战:小分享-SharePreviewPage分享预览与多平台分享按钮

前言

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net

分享预览是用户发布前的最后一步,预览卡片效果并选择分享到哪个平台。小分享 App 的 SharePreviewPage 包含卡片预览区和多平台分享按钮,使用@Builder 封装圆形按钮FlexAlign.SpaceAround 分散布局等技巧。本篇详细讲解分享预览页的完整实现。详细 API 可参考 HarmonyOS Button 官方文档。

一、SharePreviewPage 完整代码

1.1 页面完整实现

import router from '@ohos.router'; import { BottomTabBar } from '../components/BottomTabBar'; @Entry @Component struct SharePreviewPage { build() { Column() { this.HeaderBar() Scroll() { Column() { this.PreviewCard() }.padding({ bottom: 120 }) }.layoutWeight(1) this.SharePanel() } .width('100%').height('100%').backgroundColor('#F5F5F5') } }

1.2 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(16).fontColor('#F5A623') } .width('100%').padding({ left: 16, right: 16, top: 12, bottom: 12 }).backgroundColor(Color.White)

二、预览卡片

2.1 卡片布局

Column({ space: 16 }) { Text('生活的美好在于分享').fontSize(20).fontWeight(FontWeight.Bold).fontColor('#1A1A1A').width('100%') Text('无论是清晨的一缕阳光...').fontSize(14).fontColor('#666666').lineHeight(24).width('100%') Column() { Text('').fontSize(60) } .width('100%').height(200).backgroundColor('#FFF8F0').borderRadius(12) .justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center) Text('让我们用文字记录这些美好...').fontSize(14).fontColor('#666666').lineHeight(24).width('100%') } .width('100%').padding(20).backgroundColor('#FFFDF5').borderRadius(12) .margin({ left: 16, right: 16, top: 16 }) .shadow({ radius: 4, color: '#10000000', offsetY: 2 })

三、圆形分享按钮

3.1 @Builder 封装

@Builder ShareButton(icon: string, label: string, color: string) { Column({ space: 6 }) { Column() { Text(icon).fontSize(22) } .width(44).height(44).backgroundColor(color).borderRadius(22) .justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center) Text(label).fontSize(11).fontColor('#666666') } .alignItems(HorizontalAlign.Center) }

3.2 圆形按钮原理

.width(44).height(44) // 宽高相等 .borderRadius(22) // 圆角 = 宽/2 = 22 → 正圆形

四、多平台分享面板

4.1 平台颜色

平台颜色品牌色值
微信#07C160微信绿
朋友圈#07C160微信绿
微博#E6162D微博红
QQ#12B7F5QQ蓝
复制链接#666666灰色
更多#999999浅灰

4.2 分享面板布局

Column({ space: 12 }) { Text('分享到').fontSize(13).fontColor('#999999').width('100%').textAlign(TextAlign.Center) Row({ space: 0 }) { this.ShareButton('', '微信', '#07C160') this.ShareButton('', '朋友圈', '#07C160') this.ShareButton('', '微博', '#E6162D') this.ShareButton('QQ', 'QQ', '#12B7F5') this.ShareButton('', '复制链接', '#666666') this.ShareButton('', '更多', '#999999') } .width('100%').justifyContent(FlexAlign.SpaceAround) } .width('100%').padding({ top: 16, bottom: 20 }).backgroundColor(Color.White) .shadow({ radius: 4, color: '#10000000', offsetY: -2 })

五、页面布局结构

Column (主容器,背景 #F5F5F5) ├─ Row (Header 导航栏,白色背景) │ ├─ Text('‹') 返回 │ ├─ Text('预览') 标题 │ └─ Text('分享') 完成 ├─ Scroll (可滚动内容区) - layoutWeight(1) │ └─ Column (padding bottom: 120) │ └─ Column (预览卡片,米黄底色 #FFFDF5) │ ├─ Text(标题) 20px Bold │ ├─ Text(正文) 14px 灰色 │ ├─ Column(图片) 100%×200px #FFF8F0 │ └─ Text(正文) 14px 灰色 └─ Column (分享面板,白色背景) ├─ Text('分享到') 13px 灰色 └─ Row (6 个分享按钮) - SpaceAround

六、@Builder 参数化设计

6.1 分享按钮参数

参数类型说明示例
iconstring按钮图标'QQ'
labelstring按钮文字'微信'
colorstring品牌色'#07C160'

七、路由跳转策略

按钮目标API效果
‹ 返回上一页router.back()出栈返回
分享(待集成)系统分享调用系统分享

八、完整代码文件索引

文件路径说明
pages/SharePreviewPage.ets分享预览页面
components/BottomTabBar.ets底部导航栏组件

九、本文涉及的所有 API

API/组件用途文档链接
@BuilderUI 复用Builder Guide
Button按钮组件Button
Scroll可滚动容器Scroll
shadow()阴影效果Shadow
borderRadius()圆角BorderRadius
router.back()返回Router
FlexAlign对齐枚举FlexAlign

总结

本文详细讲解了 SharePreviewPage 分享预览与多平台分享按钮的实现。核心知识点包括:圆形按钮设计borderRadius(22)实现正圆)、@Builder 参数化封装ShareButton接受 icon/label/color)、分享面板布局SpaceAround分散 6 个按钮)。这些技术构成了完整的分享预览页面。下一篇我们将深入 TemplateSelectPage 模板选择页的实现。

相关资源

  • HarmonyOS Button 组件:Button Reference
  • HarmonyOS @Builder 装饰器:@Builder Guide
  • HarmonyOS Scroll 组件:Scroll Component
  • HarmonyOS shadow 属性:Shadow Attribute
  • HarmonyOS borderRadius 属性:BorderRadius
  • HarmonyOS Router 路由:Router API
  • HarmonyOS FlexAlign 枚举:FlexAlign Enums
  • 开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net
  • TemplateSelectPage 模板选择页

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/24 14:03:59

YOLOv8与OpenCV在手机屏幕划痕检测中的应用

1. 项目背景与核心价值手机屏幕划痕检测是3C产品质检环节中的关键痛点。传统人工目检方式存在效率低(每人每天最多检测800-1000台)、漏检率高(约15%-20%)、标准不统一等问题。我们团队基于工业视觉检测经验,开发出这套…

作者头像 李华
网站建设 2026/7/24 14:03:22

第01章 引言(4):分层设计的“瑞士军刀”——从THE系统到OSI七层模型

如何用“分而治之”的古老智慧,驯服网络协议的复杂性怪兽一、开篇:当“复杂度”成为敌人 1945年,美国海军正在建造一艘名为“USS 海狼号”的潜艇。这艘潜艇采用了当时最先进的——也是极其复杂的——推进系统。结果呢?它成了一艘“…

作者头像 李华
网站建设 2026/7/24 14:03:01

TLV320AIC3256音频编解码器:从架构到实战的嵌入式音频设计指南

1. 项目概述:为什么选择TLV320AIC3256?在嵌入式音频系统设计里,选型音频编解码器(Codec)是个挺有意思的活儿。你既要考虑音质,又得掂量功耗,还得看它跟主控芯片的配合度,外围电路是不…

作者头像 李华
网站建设 2026/7/24 14:01:28

AI驱动品牌IP与产品营销融合解决方案

1. 品牌IP与产品营销融合的行业痛点在消费品行业摸爬滚打十年,我见过太多品牌在IP营销上栽的跟头。去年服务的一个美妆客户,花200万签了当红明星代言,结果产品包装、社交媒体、线下活动各做各的,消费者根本记不住品牌想传达的核心…

作者头像 李华
网站建设 2026/7/24 13:56:40

TI DRV89xx-Q1电机驱动芯片实战:从数据手册曲线解读到SPI配置与热设计

1. 项目概述:从数据手册到设计实战拿到一份芯片的数据手册,尤其是像TI DRV89xx-Q1这样的多路半桥驱动器,面对几十页的英文文档和一堆图表,很多工程师的第一反应可能是直接翻到“典型应用电路”那一页,照着画原理图。这…

作者头像 李华