【开源项目学习】源码剖析,学习仿网易云音乐app代码
【前言】
这篇文字不全是讲app代码,而是博主怎么根据代码系统学习梳理的过程,非专业,如有不对,欢迎指出
仿网易云音乐app源码地址:https://github.com/aa112901/remusic
代码分析过程用的代码地图工具参考链接:
https://blog.****.net/weixin_39020940/article/details/80633835
【基础知识】
APP的UI鉴赏:
首先是基础,我们要知道android的代码工程结构
其次是看一下产品的代码结构(使用StarTool导出分析)
基于这个代码地图我们可以先做一些基本的总结(在Sub Sys选择数据透视图导出):
Sub Sys | 汇总 | 功能 | 介绍 |
app.src.main.java.com.bilibili.magicasakura.widgets | 27 | 窗口小部件 | |
app.src.main.java.com.wm.remusic.fragment | 25 | 片段页 | https://www.cnblogs.com/cr330326/p/5712022.html |
app.src.main.java.com.wm.remusic.activity | 23 | 功能页 | https://www.cnblogs.com/jycboy/p/6367282.html |
app.src.main.java.com.wm.remusic.json | 21 | 数据 | |
app.src.main.java.com.wm.remusic.widget | 19 | 窗口小部件 | |
app.src.main.java.com.wm.remusic.uitl | 17 | 工具 | |
app.src.main.java.com.wm.remusic.fragmentnet | 15 | 片段页 | |
app.src.main.java.com.wm.remusic.net | 15 | 网络 | |
app.src.main.java.com.wm.remusic.lastfmapi.models | 11 | ||
app.src.main.java.com.bilibili.magicasakura.utils | 9 | 工具 | |
app.src.main.java.com.wm.remusic.adapter | 9 | 适配层 | |
app.src.main.java.com.wm.remusic.provider | 7 | 小功能集 | 感觉作者把不知道放哪的就放在这里了 |
app.src.main.java.com.wm.remusic.proxy.utils | 7 | 工具 | |
app.src.main.java.com.wm.remusic.downmusic | 6 | 下载功能 | |
app.src.main.java.com.wm.remusic.recent | 6 | 历史 | |
app.src.main.java.com.wm.remusic.uitl.Comparator | 5 | 工具 | |
app.src.main.java.com.wm.remusic.info | 5 | 结构类 | 音乐\相册\艺术家等 |
app.src.main.java.com.wm.remusic.permissions | 4 | 权限控制 | |
app.src.main.java.com.wm.remusic.dialog | 4 | 会话框 | |
app.src.main.java.com.wm.remusic.lrc | 4 | 歌词 | |
app.src.main.java.com.wm.remusic.lastfmapi | 3 | ||
app.src.main.java.com.wm.remusic.service | 3 | 主服务 | |
app.src.main.java.com.wm.remusic.receiver | 2 | ||
app.src.main.java.com.wm.remusic.lastfmapi.callbacks | 2 | ||
app.src.main.java.com.wm.remusic.handler | 2 | ||
app.src.main.java.com.bilibili.magicasakura.drawables | 1 | ||
app.src.main.java.com.wm.remusic.proxy | 1 | ||
app.src.main.java.com.wm.remusic | 1 | 主程序 | https://www.jianshu.com/p/f665366b2a47 |
app.src.main.java.com.wm.remusic.proxy.db | 1 | 本地数据sqlite |
PS:这个代码偏C风格。使用了匈牙利命名法
先看看提供了哪些Activity
嗯。播放列表、相册列表、主界面、艺术家详情、加载页面,虽然很多细节不懂,但应该是聚合了功能和页面布局,以RadioDetailActivity
Fragment,Fragment和Activity的区别和联系可以参考:https://www.cnblogs.com/cold-ice/p/6054359.html
接下来以音乐播放为例,画出请求的流程
最后放一张android的交互图(来源自Internet):