WanAndroid是一款基于MVVM架构的Android学习资源应用,提供了Android开发相关的文章、知识体系、热门网站等内容。项目采用模块化设计,结构清晰,使用了现代Android开发技术栈。
项目分为三个主要模块:
├── app/ # 主应用模块,包含UI界面和业务逻辑
├── base/ # 基础功能模块,提供通用组件和基类
└── http/ # 网络请求模块,处理API调用和数据交互
app/
├── activity/ # Activity类
│ ├── about/ # 关于我们页面
│ ├── collect/ # 收藏文章页面
│ ├── home/ # 主页(TabActivity)
│ ├── login/ # 登录和注册页面
│ ├── search/ # 搜索页面
│ └── web/ # 网页浏览页面
├── adapter/ # 各种RecyclerView适配器
├── common/ # 常量定义
├── fragment/ # Fragment类
│ ├── common/ # 常用网站和热点搜索Fragment
│ ├── home/ # 首页文章列表Fragment
│ └── mine/ # 我的页面Fragment
├── repository/ # 数据仓库和模型
│ └── data/ # 数据模型类
└── WanApp.kt # 应用入口类
base/
├── adapter/ # 基础适配器类
│ ├── AdapterItemListener.kt # 列表项点击监听器
│ ├── BaseRecyclerAdapterPlus.kt # 增强型RecyclerView适配器
│ └── PageDiffUtil.kt # 列表差异化更新工具
├── BaseActivity.kt # Activity基类
├── BaseFragment.kt # Fragment基类
├── BaseViewModel.kt # ViewModel基类
├── SingleLiveEvent.kt # 单次事件LiveData
├── tab/ # 底部导航组件
└── view/ # 自定义视图组件
http/
├── ApiAddress.kt # API地址常量
├── ApiException.kt # API异常处理
├── BaseResponse.kt # 响应基类
├── BaseUrlConstants.kt # 基础URL常量
├── ExceptionUtil.kt # 异常处理工具
├── PersistentCookieJar.kt # Cookie持久化
├── RetrofitClient.kt # Retrofit客户端
└── TrustAllCerts.kt # 证书相关工具
-
基类设计:
BaseActivity:所有Activity的基类,处理ViewModel绑定和基础生命周期BaseFragment:所有Fragment的基类,提供相似的功能BaseViewModel:所有ViewModel的基类BaseRecyclerAdapter:RecyclerView适配器基类
-
数据绑定:
- 使用DataBinding自动绑定视图和数据
- 通过BR标识符关联ViewModel和视图
- 从
WanApp启动应用 - 进入
TabActivity,它是应用的主界面容器 TabActivity通过NavigationBottomBar和ViewPager2管理三个主要Fragment
Repository单例作为数据源,封装所有网络请求- 通过
RetrofitClient单例创建API调用接口 ApiService接口定义了所有网络接口- 使用Kotlin协程执行异步请求
- ViewModel通过LiveData将结果通知UI
FragHome展示文章列表和轮播图HomeViewModel负责获取首页数据HomeListAdapter处理列表展示和Banner显示
FragCommon显示热门搜索词和常用网站- 点击搜索词进入
SearchActivity - 搜索结果通过
Repository.search()获取
FragMine显示用户信息和功能入口LoginActivity处理登录/注册- 用户信息存储在SharedPreferences中
MyCollectActivity显示收藏的文章
WebActivity使用WebView加载文章内容- 支持收藏、分享等操作
- 语言:Kotlin
- 架构:MVVM
- UI框架:
- 传统XML视图 + DataBinding
- ViewPager2
- RecyclerView
- 网络请求:
- Retrofit2
- OkHttp3
- Kotlin协程
- 数据管理:
- LiveData
- ViewModel
- 其他工具:
- Banner轮播图组件
- Glide图片加载
- SharedPreferences数据存储
- UtilcodeX工具库