鸿蒙ArkTS仿写抖音-开篇(没有代码)

654 阅读3分钟

背景

网上很多人写了用鸿蒙ArkTS仿写微信你们觉得简单,今天我想挑战下我的软肋,掀桌子了,直接仿写抖音交个投名状,今天是个开篇我们不写代码(先纸上谈兵),谈设计(作为一名开发者一定要锻炼自己的设计能力),后面会基于这个设计逐渐完善整个项目。

拆解

既然鸿蒙ArkTS是作为新语言开发项目那就是从0.5到1,这里为什么是0.5,其实0.5指的是我们过往开发项目的经历都是可以借鉴,(管理者不要焦虑)只不过换了一种语言再翻译一遍,主要可以包括

  • 语言(参考TypeScript,Js,Compose,Flutter)上手很快
  • 项目业务(根据各自项目业务来)
  • 项目搭建(原来项目怎么搭建,直接抄)
  • 开发流程(原来项目开发流程,直接抄)

下面我们拆解下一个完整的App从开发到落地,研发需要做哪些调研哪些事情,每一款成熟的app都必不可少。

项目基建.png

基于以上的拆解,公司多人团队的话每个小组负责一块,很快就能有产出,现在既然单兵作战,可以边开发边完善。我们看看抖音app视频播放功能,先调研下播放器层的内容看看官方有没有适合的控件

官方提供的播放器

在HarmonyOS系统中,提供两种视频播放开发的方案:

  • AVPlayer:功能较完善的音视频播放ArkTS/JS API,集成了流媒体和本地资源解析,媒体资源解封装,视频解码和渲染功能,适用于对媒体资源进行端到端播放的场景,可直接播放mp4、mkv等格式的视频文件。
  • Video组件:封装了视频播放的基础能力,需要设置数据源以及基础信息即可播放视频,但相对扩展能力较弱。Video组件由ArkUI提供能力

毫无疑问我们选择AVPlayer(官方命名有点👍,不知会不会触发敏感词),技术选型已定,下面讲讲我们如何设计

播放器设计

  • 抽象一个IPlayer接口(如果需要换播放器可以快速切换)
  • VideoPlayer包装AVPlayer实现播放器逻辑
  • VideoPlayerComponent组件内部用XComponent渲染播放内容
  • PlayControlComponent持有VideoPlayer负责播放状态控制以及UI显示
  • PlayPagerComponent将上述组件组装在一起,实现播放

image.png

抖音主页面结构

大家天天刷抖音,抖音的页面都很了解吧

image.png

下面我们看看页面拆解

主页面设计.png

上面列出的只是最基本的功能点以及核心控件,还有很多模块如搜索,直播,...每一个功能拎出来都够喝一壶

最后

今天刷到大嘴的采访视频,深有触动,每个位置都有每个位置的不易,既然每个人都有痛苦,何尝不是一种快乐

WeChat4a1bb8201852c0294fe3b3a8188eb0d0.png