鸿蒙原生从入坑到放弃
一个人摸索确实踩了不少坑(尤其是 ArkTS 的线程模型和 AVRecorder 的状态机),希望能帮后来者省点时间。鸿蒙的开发体验和 Android ,iOS 差别挺大,但 ArkUI 声明式写 UI 确实爽。分享一下这三个 App 分别用了什么技术,希望能给正在入门的朋友一些参考。这三个里最复杂的一个。把手机屏幕变成 LED 灯牌,文字水平/垂直滚动,背景色和字体色自由搭配。从零开始摸Harm
从零开始摸HarmonyOS屁股,两周了,折腾了3个APP。
鸿蒙的开发体验和 Android ,iOS 差别挺大,但 ArkUI 声明式写 UI 确实爽。分享一下这三个 App 分别用了什么技术,希望能给正在入门的朋友一些参考。
1. LED 弹幕灯牌
把手机屏幕变成 LED 灯牌,文字水平/垂直滚动,背景色和字体色自由搭配。
- UI 层全用 @kit.ArkUI,核心是 Marquee 组件,通过递增 key 强制重渲染实现滚动控制
- 内置 4 首 BGM 用 AVPlayer 播 rawfile,fdSrc 方式取文件描述符
- 所有配置(文字、颜色、速度、收藏)都存 preferences,JSON 序列化历史记录列表
- 设置面板用 bindSheet 弹出,不用额外页面
- 0 权限申请,纯本地
2. 时光囊·树洞
匿名心情记录 App,支持图文混排、视频、音频附件,带点赞评论。
- 数据库用 @kit.ArkData 的 relationalStore,mood 和 comment 两张表,外键级联删除
- 图片/视频用 PhotoViewPicker,音频用 DocumentViewPicker,选取后 fileIo.copyFileSync 到应用沙箱
- 视频首帧缩略图走 AVImageGenerator + AVMetadataExtractor,fetchFrameByTime 取最近关键帧
- 卡片模式用 Swiper 组件,图片墙用网格布局
- 用户仅需一个数字 ID,无需注册,数据全部本地
3. 灵感抽屉
这三个里最复杂的一个。灵感碎片支持文字 + 图片 + 视频 + 录音四种元素在一个 Fragment 内混排。
- 4 张 SQLite 表:fragment + fragment_element(一对多) + mood + comment
- 内置录音机用 AVRecorder,44.1kHz / 96kbps AAC 编码,输出到 fd 文件
- MIC 权限运行时通过 requestPermissionsFromUser 动态申请
- 4 态工作流(未整理 / 已整理 / 收藏 / 丢弃),客户端按 status 过滤
- 搜索用标题 LIKE、按日期用 DatePickerDialog 选范围
- 批量选择用 Set<number> 管理选中 ID,长按用 LongPressGesture
三个 App 共享的技术底座
- 全部 Stage 模型,targetSdk 6.0.2(API 12),兼容 5.0.5
- 零第三方依赖,全程只用鸿蒙原生 Kit
- 通用工具模块(CCPreference、CCUtils、Logger)三项目复用同一套代码
- TreeHole 和 Inspiration Drawer 共享 Database + MediaManager 层
|
层次 |
使用 Kit |
|
UI |
@kit.ArkUI(Column / Row / List / Swiper / Marquee / Video) |
|
数据 |
@kit.ArkData(relationalStore SQLite + preferences KV) |
|
媒体 |
@kit.MediaKit(AVPlayer / AVRecorder / AVImageGenerator) |
|
文件 |
@kit.CoreFileKit(fileIo / picker) |
|
日志 |
@kit.PerformanceAnalysisKit(hilog) |
二维码已经备好了,扫对应 App 的码就能直接下载安装。源码地址



一个人摸索确实踩了不少坑(尤其是 ArkTS 的线程模型和 AVRecorder 的状态机),希望能帮后来者省点时间。欢迎下载试用,有任何问题或者更好的实现思路随时交流。
互相学习,共同进步 🚀
更多推荐

所有评论(0)