功能对比表 + 底部固定按钮 + 服务条款链接布局
前言“海风日记“的 Premium 订阅页底部包含固定按钮和服务条款链接通过 Column 布局实现固定底部区域。本文将从源码出发深入讲解底部固定按钮的布局。一、ImageViewerPage 图片查看器Entry Component struct ImageViewerPage { State currentIndex: number 0 private imageUrls: string[] [image1, image2, image3, image4] build() { Column() { // 顶部操作栏 Row() { Button() { SymbolGlyph($r(sys.symbol.xmark)).fontSize(20).fontColor([#FFFFFF]) } .onClick(() router.back()) Text(${this.currentIndex 1} / ${this.imageUrls.length}) Button() { SymbolGlyph($r(sys.symbol.ellipsis_circle)).fontSize(20).fontColor([#FFFFFF]) } } // 主图片轮播 Swiper() { ForEach(this.imageUrls, (url, idx) { Column() { SymbolGlyph($r(sys.symbol.camera)).fontSize(64) } }) } .layoutWeight(1).indicator(false).loop(false) // 缩略图预览条 Scroll() { Row({ space: 8 }) { ForEach(this.imageUrls, (url, idx) { Column().width(56).height(56).borderRadius(8).backgroundColor(#E8A0A0) .onClick(() { this.currentIndex idx }) }) } } } .backgroundColor(#000000) } }二、PrivacyPasswordPage 隐私密码Entry Component struct PrivacyPasswordPage { State hasPassword: boolean false State isSettingMode: boolean false State password: string private readonly KEY_ROWS: string[][] [ [1, 2, 3], [4, 5, 6], [7, 8, 9], [, 0, del] ] handleKey(key: string) { if (key del) { this.password this.password.substring(0, this.password.length - 1) } else if (key.length 0 this.password.length 6) { this.password key } } build() { // 三态未设置 / 输入密码 / 已设置 if (!this.hasPassword !this.isSettingMode) { // 未设置 } else if (this.isSettingMode) { // 输入密码 } else { // 已设置 } } }三、常见问题 FAQEntry Component struct FaqPage { State faqs: FaqItem[] [ { q: 如何备份我的日记, a: 前往「我的 → 数据管理 → 同步备份」, expanded: false }, { q: 日记内容会加密吗, a: 您的所有日记内容均使用 AES-256 加密存储, expanded: false }, ] build() { ForEach(this.faqs, (item: FaqItem, idx: number) { Column() { Row() { Text(Q).fontSize(12).fontColor(COLOR_WHITE) .width(20).height(20).borderRadius(10).backgroundColor(COLOR_PRIMARY) Text(item.q).fontSize(14).fontColor(COLOR_TEXT_MAIN) SymbolGlyph(item.expanded ? $r(sys.symbol.chevron_up) : $r(sys.symbol.chevron_down)) } .onClick(() { this.faqs[idx] { q: item.q, a: item.a, expanded: !item.expanded } this.faqs [...this.faqs] }) if (item.expanded) { Row() { Text(A).fontSize(12).fontColor(COLOR_WHITE) .width(20).height(20).borderRadius(10).backgroundColor(COLOR_AMBER) Text(item.a).fontSize(13).fontColor(COLOR_TEXT_SECONDARY) } } } }) } }四、总结本文通过“海风日记“的多个高级功能页面深入讲解了图片查看、隐私密码和 FAQ 的实现ImageViewerPageSwiper 轮播 缩略图PrivacyPasswordPage自定义数字键盘 三态切换FaqPage手风琴展开 QA 折叠至此第十二系列“高级功能与特殊页面“全部完成下一篇文章开始进入第十三系列鸿蒙特性与最佳实践。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源Swiper 组件文档Scroll 组件文档海风日记项目源码[HarmonyOS 开发者官网](https://atomgit.com/openharmony/docs开源鸿蒙跨平台社区

相关新闻

零基础语音识别工具评测怎么选

零基础语音识别工具评测怎么选

&esmp;找语音识别工具用来整理入职培训录音、学习产品知识、帮零基础新人快速上手新工作,选的时候记住三个核心判断标准就行:先看日常培训录音的转写准确率够不够,再看能不能帮你把转好的内容整理成可复习的知识点,最后看操作…

2026/7/19 7:00:45 阅读更多 →
CentOS下Node.js与ws模块安装及WebSocket开发指南

CentOS下Node.js与ws模块安装及WebSocket开发指南

1. CentOS下Node.js与ws模块安装指南在服务器端开发中,Node.js因其高效的异步I/O模型和丰富的生态系统成为构建实时应用的首选。而WebSocket协议作为HTML5标准的一部分,为浏览器和服务器之间提供了全双工通信通道。本文将详细介绍在CentOS系统上搭建Node…

2026/7/20 11:13:16 阅读更多 →
2026 Claude国内怎么充值?Pro、Max、API与Claude Code付款指南

2026 Claude国内怎么充值?Pro、Max、API与Claude Code付款指南

国内用户准备给Claude付费时,第一步不是寻找付款渠道,而是先确认自己需要购买哪一种产品。Claude Pro和Max属于聊天订阅,Claude API采用预付额度按量计费;Claude Code既可以使用Pro或Max账号登录,也可以通过Anthropic …

2026/7/20 11:11:46 阅读更多 →

最新新闻

传统后端转AI开发必看:告别啃大模型原理,掌握这5步快速落地!

传统后端转AI开发必看:告别啃大模型原理,掌握这5步快速落地!

先说结论: 传统后端转AI应用开发,千万别一上来就啃大模型原理。 不是原理不重要。 而是对大部分传统后端来说,学习顺序错了,真的会越学越焦虑。 这里说的传统后端,不只是Java和Go。 也包括Golang、Python、.NET、PHP这…

2026/7/20 11:12:18 阅读更多 →
影刀RPA 流程发布与版本管理:本地开发到生产上线的规范流程

影刀RPA 流程发布与版本管理:本地开发到生产上线的规范流程

影刀RPA 流程发布与版本管理:本地开发到生产上线的规范流程 “这个流程上周还能跑的,这周怎么不行了?” — 因为你直接在正式环境上改代码。 RPA流程虽然不像软件工程那么重型,但基本的版本管理规范还是需要的。这篇文章给出一套…

2026/7/20 11:12:18 阅读更多 →
企业AI转型必看:从哪些场景切入,成功率才能翻倍?

企业AI转型必看:从哪些场景切入,成功率才能翻倍?

2026 年,一个事实已经清晰:AI 不是要不要用的问题,而是怎么用才能拿到价值的问题。 McKinsey 调研 10,000 名高管发现,88% 的组织正在部署 AI,但只有 1% 的美国 C-suite 认为 AI 部署已经「成熟」。BCG 调研 1,250 名高…

2026/7/20 11:12:18 阅读更多 →
2026年点胶机哪家靠谱?7项筛选标准帮你选

2026年点胶机哪家靠谱?7项筛选标准帮你选

靠谱点胶机厂商的核心筛选标准自动点胶机广泛应用于3C、五金、电子、塑胶等多个工业领域,其精度、稳定性和售后服务直接影响产线良率与生产效率。当前国内点胶机厂商数量众多,产品质量参差不齐,采购方往往难以判断哪家供应商靠谱,…

2026/7/20 11:12:18 阅读更多 →
为什么Voron 2.4是解决3D打印精度与速度矛盾的开源终极方案

为什么Voron 2.4是解决3D打印精度与速度矛盾的开源终极方案

为什么Voron 2.4是解决3D打印精度与速度矛盾的开源终极方案 【免费下载链接】Voron-2 Voron 2 CoreXY 3D Printer design 项目地址: https://gitcode.com/gh_mirrors/vo/Voron-2 想象一下,当你精心设计的机械零件打印到一半时,突然发现表面出现了…

2026/7/20 11:12:17 阅读更多 →
日常分享身边善意小事,潜移默化塑造孩子柔软同理心

日常分享身边善意小事,潜移默化塑造孩子柔软同理心

孩子的同理心并非与生俱来,而是在日常生活的点滴浸润中慢慢生长。父母作为孩子最亲近的陪伴者,每天都在不经意间传递着如何理解他人、回应世界的信号。当父母愿意放慢脚步,把生活中那些温暖的善意小事自然地分享给孩子,便是在为孩…

2026/7/20 11:11:15 阅读更多 →

日新闻

2026 WAIC:努比亚二代“豆包手机”NaviX Ultra亮相,智能体验全面升级!

2026 WAIC:努比亚二代“豆包手机”NaviX Ultra亮相,智能体验全面升级!

7月18日智东西消息,在2026 WAIC期间,努比亚联合字节豆包打造的二代“豆包手机”努比亚NaviX Ultra首次亮相,相比一代有诸多升级。智能体手机理念中兴通讯终端事业部总裁、努比亚总裁倪飞表示,智能体手机要从人操作手机变为手机帮人…

2026/7/20 0:00:34 阅读更多 →
努比亚NaviX Ultra亮相WAIC,智能体手机能否让用户生活更简单?

努比亚NaviX Ultra亮相WAIC,智能体手机能否让用户生活更简单?

努比亚NaviX Ultra:外观与功能双升级在2026 WAIC期间,首次亮相的努比亚NaviX Ultra吸引了众多目光。它是努比亚联合字节豆包打造的二代“豆包手机”,与一代努比亚M153相比,外观设计变化较大。其机身背部搭载横向排布的大尺寸影像模…

2026/7/20 0:00:34 阅读更多 →
C# 将逗号分割的字符串转换为long,并添加到List<long>

C# 将逗号分割的字符串转换为long,并添加到List<long>

目录 方法1:使用Split和Convert.ToInt64 方法2:使用LINQ的Select和ToList 方法3:使用TryParse进行异常安全转换(推荐) 如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天…

2026/7/20 0:00:34 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/7/20 5:56:42 阅读更多 →

月新闻