• Stars
    star
    1,595
  • Rank 29,332 (Top 0.6 %)
  • Language
    Kotlin
  • Created over 4 years ago
  • Updated almost 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

神奇宝贝 (PokemonGo) 基于 Jetpack + MVVM + Repository 设计模式 + Data Mapper + Kotlin Flow 的实战项目,如果这个仓库对你有帮助,请仓库右上角帮我 star 一下,非常感谢。

PokemonGo

神奇宝贝 (PokemonGo) 基于 Jetpack + MVVM + Repository + Paging3 + Kotlin Flow 的实战项目

这是一个小型的 App 项目,涉及到技术:Paging3(network + db),Dagger-Hilt,App Startup,DataBinding,Room,Motionlayout,Kotlin Flow,Coil,JProgressView 等等。

GitHub Stars GitHub Forks

PokemonGo 动态效果图如下所示,如果动图无法查看,请点击这里查看 动态效果图 | 静态图

PokemonGo 更新记录

2020-12-05:

  • upgrad kotlin plugin to 1.4.2
  • delete Kotlin synthetics
  • delete kotlin-android-extensions

2020-09-27:

  • 使用 ConflatedBroadcastChannel 实现 DB 搜索
  • 使用 StateFlow 实现 NetWork 搜索
  • 增加了 Kotlin 常用操作符 debouncefilterflatMapLatestdistinctUntilChanged 的使用

以上更新对应分析文章:

2020-07-26:

  • 增加了使用 sealed 在 Flow 基础上封装成功或者失败处理
  • 自定义 RemoteMediator 实现数据库网络加载数据( RemoteMediator 是 Paging3 当中重要成员 )

以上更新对应分析文章:

2020-07-23:

  • Flow 在 MVVM 当中的使用
  • Activity 、Fragment、ViewModel 结合 Flow 三种使用方式
  • Flow 的异常处理
  • 增加 Fragment 1.2.0 上重要的更新: 通过 Fragment 的构造函数传递参数,以及 FragmentFactory 和 FragmentContainerView 的使用
  • ......

以上更新对应分析文章:

2020-07-14:

  1. 自定义 RemoteMediator 实现 network + db 的混合使用 ( RemoteMediator 是 Paging3 当中重要成员 )
  2. 使用 Data Mapper 分离数据源 和 UI
  3. Kotlin Flow 结合 Retrofit2 + Room 的混合使用
  4. Kotlin Flow 与 LiveData 的使用
  5. 使用 Coil 加载图片
  6. 使用 ViewModel、LiveData、DataBinding 协同工作
  7. 使用 Motionlayout 做动画
  8. App Startup 与 Hilt 的使用
  9. ......

关于 PokemonGo 项目分析的文章请查看 神奇宝贝 眼前一亮的 Jetpack + MVVM 极简实战

如果这个仓库对你有帮助,请仓库右上角帮我 star 一下,非常感谢。

项目 PokemonGo 涉及到的技术

  • Gradle Versions Plugin:检查依赖库是否存在最新版本
  • Kotlin Flow:flow 是对 Kotlin 协程的扩展,让我们可以像运行同步代码一样运行异步代码
  • JetPack
    • Paging3(network + db):用到了 Paging3 中的 RemoteMediator 用来实现 network + db
    • Dagger-Hilt (2.28-alpha):依赖注入框架
    • App Startup:设置组件初始化顺序
    • DataBinding:以声明方式将可观察数据绑定到界面上
    • Room:在 SQLite 上提供了一个抽象层,流畅地访问 SQLite 数据库
    • LiveData:在底层数据库更改时通知视图
    • ViewModel:以注重生命周期的方式管理界面相关的数据
    • Andriod KTX:编写更简洁、惯用的 Kotlin 代码
  • 项目架构
    • MVVM 架构
    • Repository 设计模式
    • Data Mapper 数据映射
  • Retrofit2 & OkHttp3:用于请求网路数据
  • Coil:基于 Kotlin 开发的首个图片加载库
  • material-components-android:模块化和可定制的材料设计 UI 组件
  • Motionlayout :MotionLayout 是一种布局类型,可帮助您管理应用中的动画
  • Timber: 日志打印
  • JProgressView :一个小巧灵活可定制的进度条,支持图形:圆形、圆角矩形、矩形等等

以上技术栈对应之前写的技术文章:

如何检查依赖库的版本更新

在项目的根目录下执行以下命令。

./gradlew dependencyUpdates

会在当前目录下生成 build/dependencyUpdates/report.txt 文件,内容如下所示:

The following dependencies have later release versions:
 - androidx.swiperefreshlayout:swiperefreshlayout [1.0.0 -> 1.1.0]
     https://developer.android.com/jetpack/androidx
 - com.squareup.okhttp3:logging-interceptor [3.9.0 -> 4.7.2]
     https://square.github.io/okhttp/
 - junit:junit [4.12 -> 4.13]
     http://junit.org
 - org.koin:koin-android [2.1.5 -> 2.1.6]
 - org.koin:koin-androidx-viewmodel [2.1.5 -> 2.1.6]
 - org.koin:koin-core [2.1.5 -> 2.1.6]

Gradle release-candidate updates:
 - Gradle: [6.1.1 -> 6.5.1]

会列出所有需要更新的依赖库的最新版本,并且 Gradle Versions Plugin 比 AndroidStudio 所支持的更加全面:

  • 支持手动方式管理依赖库最新版本检查
  • 支持 ext 的方式管理依赖库最新版本检查
  • 支持 buildSrc 方式管理依赖库最新版本检查
  • 支持 gradle-wrapper 最新版本检查
  • 支持多模块的依赖库最新版本检查
  • 支持多项目的依赖库最新版本检查

MVVM 架构

PokemonGo 基于 MVVM 架构和 Repository 设计模式,如今几乎所有的 Android 开发者至少都听过 MVVM 架构,在谷歌 Android 团队宣布了 Jetpack 的视图模型之后,它已经成为了现代 Android 开发模式最流行的架构之一。

Jetpack 的视图模型的 MVVM 架构由 View + DataBinding + ViewModel + Model 组成。

TODO

  • 加入更多 Jetpack 成员
  • 设计更多的实用场景
  • 增加单元测试
  • 增加 Motionlayout 的使用
  • ......

联系我

  • 个人微信:hi-dhl
  • 公众号:ByteCode,包含 Jetpack ,Kotlin ,Android 10 系列源码,译文,LeetCode / 剑指 Offer / 多线程 / 国内外大厂算法题 等等一系列文章


最后推荐我一直在更新维护的项目和网站:

  • 计划建立一个最全、最新的 AndroidX Jetpack 相关组件的实战项目 以及 相关组件原理分析文章,正在逐渐增加 Jetpack 新成员,仓库持续更新,欢迎前去查看:AndroidX-Jetpack-Practice

  • LeetCode / 剑指 offer / 国内外大厂面试题 / 多线程 题解,语言 Java 和 kotlin,包含多种解法、解题思路、时间复杂度、空间复杂度分析

  • 最新 Android 10 源码分析系列文章,了解系统源码,不仅有助于分析问题,在面试过程中,对我们也是非常有帮助的,仓库持续更新,欢迎前去查看 Android10-Source-Analysis

  • 整理和翻译一系列精选国外的技术文章,每篇文章都会有译者思考部分,对原文的更加深入的解读,仓库持续更新,欢迎前去查看 Technical-Article-Translation

  • 「为互联网人而设计,国内国外名站导航」涵括新闻、体育、生活、娱乐、设计、产品、运营、前端开发、Android 开发等等网址,欢迎前去查看 为互联网人而设计导航网站

感谢

中文:

English:

More Repositories

1

AndroidX-Jetpack-Practice

本仓库致力于建立最全、最新的的 AndroidX Jetpack 相关组件的实践项目 以及组件对应的分析文章(持续更新中)如果对你有帮助,请在右上角 star 一下,感谢
Kotlin
1,499
star
2

Binding

Simple API implement DataBinding and ViewBinding. 简单的 API 实现 DataBinding 和 ViewBinding,欢迎 star
Kotlin
426
star
3

Leetcode-Solutions-with-Java-And-Kotlin

LeetCode 系列题解, 在线阅读 https://offer.hi-dhl.com
Kotlin
423
star
4

ComposingBuilds-vs-buildSrc

Composing builds 和 buildSrc 优势劣势对比,仓库提供了 buildSrc 和 Composing builds 两个构建脚本,下文有使用方法,如果对你有帮助,请在右上角 star 一下,感谢
Kotlin
406
star
5

Android10-Source-Analysis

致力于分享一系列 Android 10 系统源码,持续更新中...... 如果对你有帮助,请在右上角 star 一下,感谢
355
star
6

SyncKit

将本地的项目同步到远程设备,本地写代码,远程编译,将编译的结果同步到本地
Kotlin
201
star
7

Technical-Article-Translation

本仓库致力于致力于分享一系列精选国外的技术文章(持续更新)
181
star
8

KtKit

KtKit 小巧而实用,用 Kotlin 语言编写的工具库(长期更新中)
Kotlin
164
star
9

JProgressView

一个灵活的进度条,支持图形:圆形、圆角矩形、矩形等等,陆续会添加更多的图形,如果对你有帮助,请在右上角 star 一下,感谢
Kotlin
76
star
10

JDataBinding

JDataBinding 是基于 DataBinding 封装的基础库,持续更新中 ...... 如果对你有帮助,请在右上角 star 一下,感谢
Kotlin
75
star
11

fast_guides

10分钟入门Shell脚本编程
Shell
50
star
12

MAD-Skills

Google 近期发布了 MAD Skills 新系列教程,旨在帮助开发者使用最新的技术,开发更好的应用程序,将会包含(双语视频、文章、案例、源码)
50
star
13

DeviceMonitorPlugin

解决在Android Studio 3.2找不到Android Device Monitor工具
Java
42
star
14

HarmonyPractice

这个仓库主要用于演示 ArkTS 语法和 鸿蒙组件的使用,以及鸿蒙的实战项目
Objective-C
36
star
15

DebugApkSmali

基于Smali文件 Android Studio 动态调试 APP
Smali
35
star
16

screenVideo

screenVideo是一个通用的视频截图工具,目前已经适配大部分机型,对于个别机型不能使用的欢迎issuses
Java
13
star
17

KtPractice

这个仓库用于实践和测试 Kotlin 、 Java 性能 和 新语法相关的代码案例,正在陆续添加新的案例。欢迎 star
Kotlin
13
star
18

AOSP-PackageInstaller

系统安装器PackageInstaller(7.1.2、8.1.0、9.0.0、10.0.0)相关的源码
12
star
19

hi-dhl

11
star
20

Leetcode-Solution-CPP-C

LeetCode / 剑指 offer 系列题解, 在线阅读 https://offer.hi-dhl.com
C++
5
star
21

PersonalBlog

personal blog
HTML
1
star