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 相关控件,Navigation,Lifecyle,DataBinding,LiveData,ViewModel等搭建的 MVVM 架构模式;
  2. 通过组件化,模块化拆分,实现项目更好解耦和复用,ARouter 实现模块间通信;
  3. 使用 协程+Flow+Retrofit+OkHttp 优雅地实现网络请求;
  4. 通过 mmkv,Room 数据库等实现对数据缓存的管理;
  5. 使用谷歌 ExoPlayer 实现短视频播放;
  6. 使用 Glide 完成图片加载;
  7. 通过 WanAndroid 提供的 API 实现的一款玩安卓客户端。

SumTea 工程架构

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

2. 项目功能

APP 壳工程:

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

mod_main:

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

mod_user:

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

mod_login:

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

mod_search:

  1. 搜索页面
  2. 用户搜索历史数据
  3. 搜索推荐数据

mod_video:

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

lib_framework:

  1. Base 基类相关
  2. Ext 拓展函数
  3. Loading 加载框
  4. LogUtil 日志打印工具类
  5. Manager 相关管理类
  6. TipsToast 吐司工具类
  7. Utils 相关工具类
  8. 带删除按钮的 EditText

lib_common:

  1. 二次封装的 Banner 组件
  2. 常量类
  3. 实体 Bean
  4. 组件化通信的 provider 和 IService
  5. 通用 View

lib_network:

  1. Api 接口类
  2. 错误相关类
  3. Flow 扩展类,网络请求封装
  4. Http 相关拦截器
  5. 相关管理类
  6. BaseViewModel&BaseRepository 协程网络请求封装
  7. OkHttp 和 Retrofit 封装

lib_stater:

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

lib_banner:

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

lib_glide:

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

lib_room:

  1. Room 数据库相关
  2. 视频列表缓存

3. 收获

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

  1. 如何使用 Charles 抓包。
  2. 提供大量扩展函数,快速开发,提高效率。
  3. ChipGroup 和 FlexboxLayoutManager 等多种原生方式实现流式布局。
  4. 符合阿里巴巴 Java 开发规范和阿里巴巴 Android 开发规范,并有良好的注释。
  5. CoordinatorLayout 和 Toolbar 实现首页栏目吸顶效果和轮播图电影效果。
  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
AI Daily Digest