从零开始摸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 的状态机),希望能帮后来者省点时间。欢迎下载试用,有任何问题或者更好的实现思路随时交流。

互相学习,共同进步 🚀

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐