宝可梦图鉴
🗡️ 宝可梦图鉴展示了基于MVVM架构的现代Android开发,使用Hilt、Coroutines、Flow、Jetpack (Room、ViewModel)和Material Design。
[!提示] 如果你想查看Jetpack Compose版本的宝可梦图鉴,请查看Pokedex Compose仓库。
下载
前往发布页面下载最新的APK。
技术栈和开源库
- 最低SDK版本21
- 基于Kotlin,使用Coroutines + Flow进行异步处理。
- Jetpack
- Lifecycle:观察Android生命周期并处理UI状态变化。
- ViewModel:管理UI相关的数据持有者和生命周期感知。允许数据在配置更改(如屏幕旋转)时存活。
- DataBinding:以声明式格式将布局中的UI组件绑定到应用中的数据源。
- Room:构建数据库,提供SQLite的抽象层,允许流畅的数据库访问。
- Hilt:用于依赖注入。
- 架构
- MVVM架构(视图 - 数据绑定 - ViewModel - 模型)
- Bindables:Android数据绑定工具包,用于向UI层通知数据变化。
- 仓库模式
- Retrofit2 & OkHttp3:构建REST API和分页网络数据。
- Sandwich:构建轻量级现代响应接口,处理Android的网络负载。
- Moshi:现代JSON库,用于Kotlin和Java。
- WhatIf:更流畅地检查可空对象和空集合。
- Bundler:Android Intent和Bundle扩展,优雅地插入和检索值。
- ksp:Kotlin符号处理API。
- Turbine:用于kotlinx.coroutines Flow的小型测试库。
- Material-Components:Material设计组件,用于构建涟漪动画和CardView。
- Glide, GlidePalette:加载网络图片。
- TransformationLayout:实现转换动画。
- 自定义视图
- Rainbow:Android简易渐变和着色应用方法。
- AndroidRibbon:在Android上实现美丽闪烁丝带的简单方法。
- ProgressView:精致灵活的ProgressView,完全可定制并带有动画。
- Timber:小型可扩展API的日志记录工具。
架构
宝可梦图鉴基于MVVM架构和仓库模式,遵循Google的官方架构指南。
宝可梦图鉴的整体架构由两层组成:UI层和数据层。每层都有专门的组件,各自承担不同的责任,如下所述:
宝可梦图鉴是按照应用架构指南构建的,因此它是展示架构如何在实际项目中运作的绝佳样本。
架构概览
- 每一层都遵循单向事件/数据流;UI层向数据层发送用户事件,数据层将数据作为流向其他层暴露。
- 数据层设计为独立于其他层工作,必须是纯粹的,这意味着它不依赖于其他层。
通过这种松耦合的架构,你可以提高组件的可重用性和应用的可扩展性。
UI层
UI层由UI元素组成,用于配置可与用户交互的屏幕,以及ViewModel,它保存应用状态并在配置更改时恢复数据。
- UI元素通过DataBinding观察数据流,这是MVVM架构最重要的部分。
- 使用Bindables,这是一个Android数据绑定工具包,用于通知数据变化,你可以在XML中非常干净地实现双向绑定和数据观察。
数据层
数据层由仓库组成,包含业务逻辑,如从本地数据库查询数据和从网络请求远程数据。它实现为离线优先的业务逻辑来源,并遵循单一真实来源原则。
宝可梦图鉴是一个离线优先的应用,能够在没有互联网连接的情况下执行全部或关键的核心功能。 因此用户无需每次都更新网络资源,这将减少用户的数据消耗。更多信息,你可以查看构建离线优先应用。
模块化
宝可梦图鉴采用了以下模块化策略:
- 可重用性:适当模块化可重用代码,为代码共享创造机会,同时限制其他模块对代码的访问。
- 并行构建:每个模块可以并行运行,从而减少构建时间。
- 严格的可见性控制:模块限制暴露专用组件和对其他层的访问,防止它们在模块外被使用。
- 去中心化关注:每个开发团队可以分配他们专门的模块,专注于自己的模块。
更多信息,请查看Android应用模块化指南。
MAD评分
开放API
宝可梦图鉴使用PokeAPI构建RESTful API。
PokeAPI提供了一个RESTful API接口,可访问由数千行与宝可梦相关的数据构建而成的高度详细的对象。
觉得这个仓库有用吗?:heart:
通过加入这个仓库的__星标用户来支持它。:star:
同时,在GitHub上关注我__,了解我的下一个创作!🤩
许可证
由skydoves (Jaewoong Eum) 在2022年设计和开发
根据Apache许可证2.0版("许可证")授权;
除非遵守许可证,否则您不得使用此文件。
您可以在以下位置获取许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,软件
根据许可证分发的"按原样"分发,
不附带任何明示或暗示的担保或条件。
有关许可证下的特定语言管理权限和
限制,请参阅许可证。