# Android-references
**Repository Path**: amyocean/Android-references
## Basic Information
- **Project Name**: Android-references
- **Description**: Android relerences copy for learning
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-07-17
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Awesome Android
> 该项主要用来收集和整理开发过程中经常用到的三方库和控件,并包含一些演示代码。[可以参考下文来了解更多的内容]
## 代码清单
### 1、整体结构
```
/-----
/----- advanced IPC, AIDL
/----- animations CircularReveal, TapTargetView, Ripple, etc
/----- client 整体 APP 打包
/----- commons 公共库
/----- eyepetizer 开眼视频, MVP
/----- guokr 果壳新闻
/----- knife-annotations ButterKnife 注解
/----- knife-api ButterKnife API
/----- knife-compiler ButterKnife 编译器
/----- layout MaterialDesign
/----- libraries 指纹识别, EventBus, WorkManager, Knife etc
/----- live 全民直播
```
注:各个模块借助 `ARouter` 实现了模块化开发,可以通过修改 [gradle.properties](client/gradle.properties) 中的属性来实现各个模块独立打包
### 2、视频直播
对应于 `live` 模块,该模块主要用来演示**视频直播**相关的功能:
基于《全民直播》的 API 设计的在线视频直播功能;使用了支持包里的 `Palette` 来提取图片的颜色;`MVVM` 架构设计 (在该项目中的使用不符合规范,谨慎参考);使用了pldroid-player作为视频播放的工具。
部分截图:
### 3、果壳新闻
对应于 `guokr` 模块,该模块主要用来演示`OkHttp + Retrofit + RexJava`的开发方式:
基于《果壳网》 API 设计的新闻客户端,包含基本的"列表-详情"结构;MVVM 架构设计 (在该项目中的使用不符合规范,谨慎参考)。
### 4、开眼视频
对应于 `eyepetizer` 模块,该模块主要用来演示**小视频**类型的 APP 相关的功能,同时演示 `MVP` 架构模式在 Android 端的使用方式:
MVP 架构设计;基于《开眼视频》的 API 设计视频浏览客户端。
注:项目比较小,功能比较少,主要用来演示核心的网络视频播放功能。
### 5、MaterialDesign
对应于 `layout` 模块,该模块主要用来整理 MaterialDesign 相关的布局和控件,目前包含的布局有:
`Navigation`、`Tabbed`、`Bottom sheet`、`Scrolling`、`Collapse`、`Support 28` 中的部分控件。
### 6、其他
1. 自定义类似于 `ButterKnife` 的库,文件路径包含 [knife-annotation](knife-annotation)、[knife-api](knife-api) 和 [knife-compiler](knife-compiler)
该部分内容需要使用 Java 中的注解以及注解处理,你可以通过这篇文章来了解这部分功能如何实现:[《Java 注解及其在 Android 中的应用》](https://juejin.im/post/5b824b8751882542f105447d)
2. 使用 `RxJava2` 搭建一个 `EventBus`,文件路径在 [rxbus](commons\src\main\java\me\shouheng\commons\rxbus)
该部分使用 `RxJava2` 实现一个类似于 `EventBus` 的全局通信的框架,相关的知识可以通过这篇文章进行了解:[《RxJava2 系列 (3):使用 Subject》](https://juejin.im/post/5b801dfa51882542cb409905)
3. 在该项目中使用了 `MVP` 和 `MVVM` 两种架构设计方式,同时使用了 `ARouter` 来实现了模块化开发,你可以通过这篇文章来了解相关的知识:[《Android 架构设计:MVC、MVP、MVVM和组件化》](https://juejin.im/post/5b7c1706f265da436d7e408e)
4. 如果你希望了解 `OkHttp` 的源码相关的知识,请参考我的这篇文章:[《Andriod 网络框架 OkHttp 源码解析》](https://juejin.im/post/5bc89fbc5188255c713cb8a5)
4. 如果你希望了解 `Retrofit` 的源码相关的知识,其中使用了哪些设计模式等等,请参考我的这篇文章:[《Android 网络框架 Retrofit 源码解析》](https://juejin.im/post/5bd05d5c6fb9a05d2b6dfc46)