Kotlin练手的一个开源项目

作者: wxyass 分类: Android,Kotlin 发布时间: 2018-04-11 18:43

模块化

拆分成块, 单独开发

抽取

通讯 使用ARouter

MVP架构

Modell – View – Rresenter

MVP Google官方版 注册:

MVP 本地版 注册:

技术选型

视图层

  • kotlin-android-extensions
  • Butterknife

业务层

  • RxKotlin
  • RxAndroid
  • RxLifeCycle

网络层

  • Rxtrofit
  • Okhttp

其它

  • Dagger2
  • ARouter
  • Gson
  • Glide
  • takephoto
  • 七牛
  • MultiStateView (多状态视图)
  • bga-refreshlayout (上下拉刷新)

项目初始化

// 新加项目

// 新加Module – androidLib – BaseLibrary

// 新加Module – androidLib – Provider

// Module转Kotlin 插件+标准库

// 类转Kotlin help – find – conver

// BaseLibrary建包
common
data – net(网络),protocol(解析json)
presenter – view
ui – activity,fragment ,adapter
ext
rx
widgets

// Provider建包
common
event
router

// App建包
ui – activity,fragment
common

// 配置模块间的依赖关系
App <- Provider
Provider <- BaseLibrary

Application与Library切换

两套AndroidManifest

debug目录中的AndroidManifest文件: 供Application使用,配置主题及默认启动
release目录的AndroidManifest文件: 供Library使用,注册组件及权限

AndroidManifest切换

初始化用户模块

// 新建Module – androidLib – UserCenter

// 修改成Kotlin 插件 + 依赖provider

// 删除provider和app的kotlin标准库的依赖,只留BaseLibrary

// UserCenter建包
activity

// RegisterActivity + 布局

// 测试启动Lib
1 修改成application
2 清单文件中,修改启动页

// gradle.properties中设置isUserMoudel true:库, false:应用

// 在UserCenter.gradle中配置,是否作为应用程序启动

动态加载模块类型

// 在src/main下新建debug和release两个包

// 分别放入AndroidManifest文件

// debug中的清单文件,去掉主题和默认启动, 只留Activity的注册

// 在UserCenter.gradle中配置, 加载哪一个清单文件

// 在App的Gradle中配置,是否引用UserCenter这个库 true:引用,false:不引用

// 修改App中的清单文件启动页, 启动测试

// 将App中Values的color,string,styles拷到BaseLibrary中

// 将App 和 UserCenter的主题都改为 @style/AppTheme

ButterKnife 不使用

android-extension插件

// 在UserCenter.build.gradle添加插件

// 测试id引用

Anko

// Anko Layouts使用

// 在Base库中引入Anko库,并在住工程Gradle中设置版本

// 测试Toast

// 测试跳转

// 测试布局

MVP配置

// 在BaseLibrary的base.presenter包下新建BasePresenter的Class文件

// BaseLibrary的base.presenter.view包下新建BaseView的interface文件

// BasePresenter持有BaseView的引用

// BaseView 添加抽象方法

// BaseLibrary的base.ui.activity包下新建BaseActvity的class文件

// BaseLibrary的base.ui.activity包下新建BaseMvpActvity的class文件

// 构建RegisterActivity需要的RegisterPresenter,RegisterView

// RegisterActivity 继承BaseMvpActivity, RegisterView

// 在RegisterPresenter中 注册方法

// RegisterView 回调

RxKotlin 和 RxAndroid

// Base库中添加 依赖包

// UserService 接口类 注册方法

// UserServiceImpl实现类

// 在Registerpresenter中做业务逻辑

// 登录逻辑

// BaseLIbrary中rx下新建类 BaseSubscriber

// 创建扩展方法

Retrofit继承

// 在Base库中添加5个依赖

// Base库net包 单例

// retrofit初始化

// OKhttpclient初始化

// 拦截器,日志拦截器

// common包 地址常量

// create方法

// 拦截器

使用网络接口

// 在Base库protocol 新建BaseResp , 响应接收类

// User库 data.api包 UserApi接口

// User库 data.protocol包 RegisterReq

// User库 data.reposotiory包 UserRepository

// User库 service.impl包 UserServiceImpl

// UserServiceImpl调用注册接口

// Base库 rx包 BaseException类

// User库 RegisterActivity调用注册

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

邮箱地址不会被公开。 必填项已用*标注