SumTea_Android

Introduction: 基于组件化+模块化+Kotlin+协程+Flow+Retrofit+Jetpack+MVVM+短视频架构实现的 WanAndroid 客户端
More: Author   ReportBugs   OfficialWebsite   
Tags:

🚀 SumTea 是一个基于 组件化+模块化+Kotlin+协程+Flow+Retrofit+Jetpack+MVVM+短视频 架构实现的 WanAndroid 客户端。 能提供大家学习如何从 0 到 1 打造一个符合大型 Android 项目的架构模式

项目截图 项目截图 项目截图 项目截图
首页 分类 体系 我的
首页视频 分类体系 搜索 登录

一、 关于 SumTea

1. 项目架构

  1. 项目采用 Kotlin 语言编写,结合 Jetpack 相关控件,NavigationLifecyleDataBindingLiveDataViewModel等搭建的 MVVM 架构模式;
  2. 通过组件化模块化拆分,实现项目更好解耦和复用,ARouter 实现模块间通信;
  3. 使用 协程+Flow+Retrofit+OkHttp 优雅地实现网络请求;
  4. 通过 mmkvRoom 数据库等实现对数据缓存的管理;
  5. 使用谷歌 ExoPlayer 实现短视频播放;
  6. 使用 Glide 完成图片加载;
  7. 通过 WanAndroid 提供的 API 实现的一款玩安卓客户端。

SumTea 工程架构

项目使用MVVM 架构模式,基本上遵循 Google 推荐的架构,对于 Repository,Google 认为 ViewModel 仅仅用来做数据的存储,数据加载应该由 Repository 来完成。通过 Room 数据库实现对数据的缓存,在无网络或者弱网的情况下优先展示缓存数据。 MVVM 架构图

2. 项目功能

APP 壳工程:

  1. Application 类
  2. 打包环境,签名,混淆规则,业务模块集成,APP 主题等配置等

    mod_main:

  3. 包含首页,分类,体系,我的四个 tab,Navigation 实现管理
  4. 首页 tab 包含 Banner 轮播图,视频列表,项目文章列表
  5. 分类 tab 包含各网站文章的分类内容
  6. 体系 tab 包含知识体系的文章分类,二级为文章列表
  7. 我的 tab 包含个人信息,服务栏,文章推荐列表

    mod_user:

  8. 包含个人设置页面,账户安全
  9. 个人信息页设置头像、姓名、手机号码等个人信息
  10. 隐私政策条款功能
  11. 查看版本信息以及更新 App 功能
  12. 清除手机缓存功能
  13. 用户退出登录功能

    mod_login:

  14. 登录页面登录功能,以及隐私政策
  15. 其他登录方式选择
  16. 用户注册页面

    mod_search:

  17. 搜索页面
  18. 用户搜索历史数据
  19. 搜索推荐数据

    mod_video:

  20. RecyclerView 实现防抖音短视频列表,保证全局只有一个播放器
  21. ExoPlayer 播放器实现视频播放功能
  22. RotateNoteView 实现旋转音乐盒

    lib_framework:

  23. Base 基类相关
  24. Ext 拓展函数
  25. Loading 加载框
  26. LogUtil 日志打印工具类
  27. Manager 相关管理类
  28. TipsToast 吐司工具类
  29. Utils 相关工具类
  30. 带删除按钮的 EditText

    lib_common:

  31. 二次封装的 Banner 组件
  32. 常量类
  33. 实体 Bean
  34. 组件化通信的 provider 和 IService
  35. 通用 View

    lib_network:

  36. Api 接口类
  37. 错误相关类
  38. Flow 扩展类,网络请求封装
  39. Http 相关拦截器
  40. 相关管理类
  41. BaseViewModel&BaseRepository 协程网络请求封装
  42. OkHttp 和 Retrofit 封装

    lib_stater:

  43. 异步任务,延迟任务启动器
  44. 任务优先级,线程池,依赖关系,是否需要等待

    lib_banner:

  45. 功能全面的 Banner 组件,lifecycle 关联 Activity/Fragment 生命周期

    lib_glide:

  46. 对 Glide 使用的二次封装
  47. 圆角,圆形,缓存,高斯模糊图片加载

    lib_room:

  48. Room 数据库相关
  49. 视频列表缓存

3. 收获

除去可以学到 Kotlin + MVVM + Android Jetpack + 协程 + Flow + 组件化 + 模块化 + 短视频 的知识,相信你还可以在我的项目中学到:

  1. 如何使用 Charles 抓包。
  2. 提供大量扩展函数,快速开发,提高效率。
  3. ChipGroupFlexboxLayoutManager 等多种原生方式实现流式布局。
  4. 符合阿里巴巴 Java 开发规范和阿里巴巴 Android 开发规范,并有良好的注释。
  5. CoordinatorLayoutToolbar 实现首页栏目吸顶效果和轮播图电影效果。
  6. 利用 ViewOutlineProvider 给控件添加圆角,大大减少手写 shape 圆角 xml。
  7. ConstraintLayout 的使用,几乎每个界面布局都采用的 ConstraintLayout
  8. 异步任务启动器,优雅地处理 Application 中同步初始化任务问题,有效减少 APP 启动耗时。
  9. 无论是模块化或者组件化,它们本质思想都是一样的,都是化整为零,化繁为简,两者的目的都是为了重用和解耦,只是叫法不一样。

二、Jetpack 组件进阶

1.浅谈 Android Jetpack - Navigation 的架构设计

三、Kotlin 协程学习三部曲

Kotlin 协程实战进阶(一、筑基篇)

四、Android 性能优化系列

深入研究 Android 启动速度优化(上)- 看完这些启动优化已经完成 80%了

创作不易,如果本项目对您有帮助,麻烦点个Star,您的Star将是我继续创作和写博客的动力! 项目中有 APK 文件,可以直接安装看效果。

欢迎在 Issue 中提交对本仓库的改进建议~

五、注意事项

本项目 API 均来源于WanAndroid,禁止商用。

您可以在非商业的前提下免费转载,但同时您必须:

  • 保持文章原文,不作修改。
  • 明确署名,即至少注明 作者:Sumiya 字样以及文章的原始链接。
  • 微信公众号转载一律不授权 原创 标志。

About me

如您有任何问题,也可以添加我的微信,拉您进入 SumTea_Android 技术群,进行技术和学习上的交流。

wechat

感谢您的阅读!

致谢

API: 鸿洋提供的 WanAndroid API

主要使用的开源框架:

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools