背景
网上很多人写了用鸿蒙ArkTS仿写微信你们觉得简单,今天我想挑战下我的软肋,掀桌子了,直接仿写抖音交个投名状,今天是个开篇我们不写代码(先纸上谈兵),谈设计(作为一名开发者一定要锻炼自己的设计能力),后面会基于这个设计逐渐完善整个项目。
拆解
既然鸿蒙ArkTS是作为新语言开发项目那就是从0.5到1,这里为什么是0.5,其实0.5指的是我们过往开发项目的经历都是可以借鉴,(管理者不要焦虑)只不过换了一种语言再翻译一遍,主要可以包括
- 语言(参考TypeScript,Js,Compose,Flutter)上手很快
- 项目业务(根据各自项目业务来)
- 项目搭建(原来项目怎么搭建,直接抄)
- 开发流程(原来项目开发流程,直接抄)
下面我们拆解下一个完整的App从开发到落地,研发需要做哪些调研哪些事情,每一款成熟的app都必不可少。
基于以上的拆解,公司多人团队的话每个小组负责一块,很快就能有产出,现在既然单兵作战,可以边开发边完善。我们看看抖音app视频播放功能,先调研下播放器层的内容看看官方有没有适合的控件
官方提供的播放器
在HarmonyOS系统中,提供两种视频播放开发的方案:
- AVPlayer:功能较完善的音视频播放ArkTS/JS API,集成了流媒体和本地资源解析,媒体资源解封装,视频解码和渲染功能,适用于对媒体资源进行端到端播放的场景,可直接播放mp4、mkv等格式的视频文件。
- Video组件:封装了视频播放的基础能力,需要设置数据源以及基础信息即可播放视频,但相对扩展能力较弱。Video组件由ArkUI提供能力
毫无疑问我们选择AVPlayer(官方命名有点👍,不知会不会触发敏感词),技术选型已定,下面讲讲我们如何设计
播放器设计
- 抽象一个IPlayer接口(如果需要换播放器可以快速切换)
- VideoPlayer包装AVPlayer实现播放器逻辑
- VideoPlayerComponent组件内部用XComponent渲染播放内容
- PlayControlComponent持有VideoPlayer负责播放状态控制以及UI显示
- PlayPagerComponent将上述组件组装在一起,实现播放
抖音主页面结构
大家天天刷抖音,抖音的页面都很了解吧
下面我们看看页面拆解
上面列出的只是最基本的功能点以及核心控件,还有很多模块如搜索,直播,...每一个功能拎出来都够喝一壶
最后
今天刷到大嘴的采访视频,深有触动,每个位置都有每个位置的不易,既然每个人都有痛苦,何尝不是一种快乐