1. 核心创新功能实现(重点)
核心创新亮点:针对现有播客App“查找繁琐、续听不便、筛选低效”三大痛点,新增「播客收藏与本地缓存」「播放进度记忆」「分类筛选」3大核心功能,结合鸿蒙数据持久化、状态联动等技术,显著提升用户使用体验,为应用核心竞争力。 |
1.1 创新功能1:播客收藏与本地缓存
1.1.1 功能痛点解决
用户常用播客需反复在列表中查找,且离线场景下无法播放。本功能支持一键收藏播客,同时可选择本地缓存,离线状态下也能流畅收听,提升用户粘性。
1.1.2 核心技术点
- 鸿蒙数据持久化:使用ohos.data.preferences存储收藏列表,保证重启应用后收藏状态不丢失
- 文件管理:通过@kit.FileKit获取应用沙箱目录,实现播客音频文件本地缓存
- 状态联动:收藏按钮状态与偏好设置实时同步,避免重复收藏
1.1.3 实现代码(以find页面新增收藏按钮为例)
Plain Text |
1.2 创新功能2:播放进度记忆
1.2.1 功能痛点解决
用户播放播客时切换页面、中断播放或重启应用后,需重新拖动进度条查找上次播放位置,操作繁琐。本功能自动记忆每首播客的最后播放进度,再次播放时直接从记忆位置续听。
1.2.2 核心技术点
- 播放状态监听:通过avPlayerPodcastManage监听播放进度变化,每3秒同步一次进度数据
- 键值对存储:使用偏好设置以「播客id-播放进度」的键值对形式存储,查询效率高
- 初始化联动:播客开始播放前,先读取对应进度数据,实现无缝续听
1.2.3 实现代码(工具类avPlayerPodcast新增进度记忆)
Plain Text |
1.3 创新功能3:播客分类筛选
1.3.1 功能痛点解决
原有播客列表仅按默认顺序展示,用户难以快速找到“科技”“情感”“职场”等特定类型内容。本功能新增顶部分类标签栏,支持按类型筛选,提升内容查找效率。
1.3.2 核心技术点
- 数据分类定义:扩展PodcastItemType类型,新增category字段标记播客类型
- 状态驱动筛选:通过@State维护当前选中分类,实现列表实时过滤
- 弹性布局适配:分类标签使用横向滚动布局,支持多分类且不挤压页面空间
1.3.3 实现代码(recommend页面新增分类筛选)
Plain Text |
二. 项目概述
2.1 应用介绍
2. 项目概述
2.2 核心功能清单
“鸿蒙云播客”是基于HarmonyOS SDK开发的播客类应用,聚焦播客播放播客核心需求,延伸出播客单展示、用户互动、个性化推荐等功能。应用采用声明式UI框架ArkUI开发,适配鸿蒙多设备界面规范,支持跨页面状态共享,为用户提供流畅的播客体验。
三. 技术栈与项目结构
3.1 技术选型
功能模块 | 具体实现 | 对应页面 |
播客播客播放管理 | 播客列表展示、播放播客/暂停播客控制、播客播放播客页跳转 | find页面 |
个人信息展示 | 用户昵称、标签、关注/粉丝/赞数据统计 | mine页面 |
用户互动 | 动态列表、播客关联播放播客、点赞/评论/分享 | moment页面 |
内容推荐 | 轮播图、每日推荐、推荐播客单、搜索功能 | recommend页面 |
3. 核心页面实现详解
3.1 find页面:播客列表与播放播客触发
3.1.1 功能定位
作为播客列表核心入口,展示所有可播放播客播客,点击播客项触发播放播客逻辑,同步全局播放播客列表,并跳转至播客播放播客页面。
3.1.2 核心技术点
- List+ForEach组件:高效渲染播客列表,循环遍历podcastpodcastsList数据
- AppStorageV2:连接GlobalPodcast全局状态,维护播放播客列表podcastList
- 页面跳转:通过NavPathStack的pushPathByName方法跳转至播客播放播客页
- 图片资源引用:通过$r('app.media.'+item.img)动态加载播客封面
3.1.3 完整代码
typescript |
3.2 mine页面:个人信息展示
3.2.1 功能定位
展示用户个性化信息,包括头像、昵称、用户标签及关注、粉丝、获赞数据,采用分层布局提升视觉效果。
3.2.2 核心技术点
- Stack组件:实现背景图与头像的分层叠加,设置alignContent为Alignment.Bottom定位头像
- 弹性布局:通过Column+Row组合,配合flexGrow实现数据统计项均匀分布
- 安全区域适配:expandSafeArea()方法适配设备刘海屏、状态栏区域
图片适配:objectFit(ImageFit.Cover)保证背景图完整覆盖容器
3.2.3 完整代码
typescript |
3.3 moment页面:互动广场与播放播客控制
3.3.1 功能定位
用户互动核心页面,展示包含播客关联的用户动态,支持根据全局播客播放播客状态切换播放播客/暂停播客按钮,实现动态点赞、评论、分享操作。
3.3.2 核心技术点
- @Local装饰器:声明页面局部状态,存储播客数据和动态列表数据
- 播客播放播客状态同步:通过对比当前动态播客url与全局playState.url,切换播放播客/暂停播客图标
- 滚动优化:设置edgeEffect(EdgeEffect.None)、scrollBar(BarState.Off)提升滚动体验
- 嵌套滚动:nestedScroll配置实现与父组件的滚动协同
- 文本溢出处理:maxLines+ellipsisMode实现动态内容单行省略
3.3.3 完整代码
typescript |
3.4 recommend页面:内容推荐与搜索
3.4.1 功能定位
应用首页,集成轮播图广告、每日推荐内容、推荐播客单展示及搜索功能,为用户提供内容发现入口。
3.4.2 核心技术点
- @Builder装饰器:封装naviRow方法,实现标题栏+更多按钮的组件复用
- 生命周期方法:aboutToAppear()在页面出现时初始化推荐数据
- Swiper组件:实现自动轮播(autoPlay(true)),展示Banner图
- 横向列表:设置listDirection(Axis.Horizontal)实现每日推荐、播客单横向滚动
- 搜索栏布局:Flex+TextInput+Image组合,实现带图标的搜索输入框
3.4.3 完整代码
typescript |
3.5核心功能清单
功能模块 | 具体实现 | 对应页面 |
播客播客播放管理 | 播客列表展示、播放播客/暂停播客控制、播客播放播客页跳转 | find页面 |
个人信息展示 | 用户昵称、标签、关注/粉丝/赞数据统计 | mine页面 |
用户互动 | 动态列表、播客关联播放播客、点赞/评论/分享 | moment页面 |
内容推荐 | 轮播图、每日推荐、推荐播客单、搜索功能 | recommend页面 |
4. 关键技总结与扩展方向
4.1 核心技术亮点
- 声明式UI开发:ArkUI的Component/ComponentV2组件化开发,简化布局与交互绑定,提升开发效率
- 全局状态管理:AppStorageV2实现跨页面状态共享,统一维护播客播放播客状态、页面栈等核心数据
- 组件复用:通过@Builder封装通用组件,减少重复代码,提升代码可维护性
- 多布局适配:灵活运用Stack、Flex、Column、Row等布局组件,适配不同页面视觉需求
4.2 后续扩展方向
- 功能扩展:基于现有创新功能,可增加播客单编辑、多账号登录、播客分享到社交平台、播放速度调节等功能
- 性能优化:实现数据懒加载、图片缓存,提升列表滚动流畅度
- 多设备适配:针对手机、平板、智慧屏等不同设备,优化界面布局与交互逻辑
- 数据持久化:集成鸿蒙数据管理能力,实现播客播放播客历史、收藏列表本地存储
- 网络请求:对接后端接口,实现真实播客数据、用户动态的获取与展示,同时支持用户上传自制播客