功能对比表 + 底部固定按钮 + 服务条款链接布局
前言“海风日记“的 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/8/30 1:50:49 阅读更多 →
CentOS下Node.js与ws模块安装及WebSocket开发指南

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

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

2026/9/3 15:01:30 阅读更多 →
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/9/1 15:06:59 阅读更多 →

最新新闻

华为OD机试真题 2026-9-2【无人机巡检航线规划】

华为OD机试真题 2026-9-2【无人机巡检航线规划】

无人机巡检航线规划(Java/Py/C/C++/Js/Go)题解 华为OD机试真题 新系统 华为OD上机考试真题新系统 9月2号 200分题型 华为OD机试新系统真题目录点击查看: 华为OD机试新系统真题题库目录|机考题库 + 算法考点详解 题目内容 某电力公司使用无人机对 n n n 个电力塔进行巡检。…

2026/9/3 21:38:45 阅读更多 →
从一句台词到完整场景:同人创作中的逻辑补全与角色塑造

从一句台词到完整场景:同人创作中的逻辑补全与角色塑造

“小猫咪,你可以坐在这里。”看到这句话的瞬间,我脑子里冒出来的不是心动,而是一连串问题:这是什么场景?谁对谁说的?Jason Todd 怎么会用这种语气说话?Red Hood 的人设和“小猫咪”这个词放在一…

2026/9/3 21:38:45 阅读更多 →
创维75A8H值不值?75英寸4K电视选购实用指南

创维75A8H值不值?75英寸4K电视选购实用指南

先给结论:创维75A8H这类75英寸4K大屏电视,值不值不能只看型号,要看它放在你的客厅距离、观看习惯和预算区间里是否匹配。如果你正在75英寸、4K、性价比这几个词里反复对比,这篇文章不打算替你做最终决定,而是给你一套可…

2026/9/3 21:38:45 阅读更多 →
开源模型干得多赚得少?拆解开源软件商业价值与变现路径

开源模型干得多赚得少?拆解开源软件商业价值与变现路径

开源模型承担着大量实际业务任务,收入却少得可怜,软件本身从“卖钱的产品”变成了“拉客户的成本”——这个判断最近被不少人讨论过。我看到的版本是:开源模型大概承担了三成左右的任务量,却只带来几个百分点的收入,软…

2026/9/3 21:38:45 阅读更多 →
为何输入无法生成CSDN技术教程?原因与对策

为何输入无法生成CSDN技术教程?原因与对策

这个输入无法生成 CSDN 技术教程。你提供的标题【Jason Todd】“小猫咪,你可以坐在这里。”属于 DC 漫画角色 Jason Todd(红头罩 / 二代罗宾)相关的同人创作或对话片段,不是技术主题。我的角色是技术博主,只负责把软件…

2026/9/3 21:38:45 阅读更多 →
直流电机控制Proteus仿真:L298N驱动与PWM调速实战

直流电机控制Proteus仿真:L298N驱动与PWM调速实战

简介:直流电机控制Proteus仿真资源包适合电子工程专业学生、嵌入式开发初学者以及自动化控制相关技术人员,用于学习和验证直流电机的调速、正反转与闭环控制方案,解决从控制理论到仿真验证的衔接问题。资源围绕Proteus仿真环境,系…

2026/9/3 21:37:45 阅读更多 →

日新闻

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

先别急着点开,这不是劝退文,而是想讲清楚一件事:用 AI 做逆向值不值得学?如果要用,怎么搭一套“V8 环境 AI 智能体”来提升效率。最近逆向圈、爬虫圈都在聊 AI Agent、AST 工程逆向、JS 逆向这些词,很多新手…

2026/9/3 0:00:29 阅读更多 →
安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

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

2026/9/3 0:00:29 阅读更多 →
ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

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

2026/9/3 0:00:29 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/9/3 4:22:22 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/9/3 4:22:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/9/3 4:22:59 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/3 4:17:49 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/3 4:18:56 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/3 4:21:44 阅读更多 →