├── app ├── .gitignore ├── src │ └── main │ │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── colors.xml │ │ │ └── styles.xml │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── layout │ │ │ ├── adapter_item.xml │ │ │ ├── fragment_simple.xml │ │ │ ├── activity_main.xml │ │ │ └── activity_login.xml │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ └── drawable │ │ │ └── ic_launcher_background.xml │ │ ├── java │ │ └── com │ │ │ └── exmple │ │ │ └── baseprojectmvp │ │ │ ├── http │ │ │ ├── MainDataBean.kt │ │ │ ├── MainApi.kt │ │ │ └── MainRetrofit.kt │ │ │ ├── APP.kt │ │ │ └── mvp │ │ │ ├── model │ │ │ ├── LoginModel.kt │ │ │ └── MainModel.kt │ │ │ ├── contract │ │ │ ├── ILoginContract.kt │ │ │ └── IMainContact.kt │ │ │ ├── adapter │ │ │ └── DemoAdapter.kt │ │ │ ├── presenter │ │ │ ├── LoginPresenter.kt │ │ │ └── MainPresenter.kt │ │ │ └── view │ │ │ ├── LoginActivity.kt │ │ │ └── MainActivity.kt │ │ └── AndroidManifest.xml ├── proguard-rules.pro └── build.gradle ├── baselib ├── .gitignore ├── src │ └── main │ │ ├── res │ │ ├── values │ │ │ ├── strings.xml │ │ │ ├── ids.xml │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── styles_dialog.xml │ │ │ ├── styles_view.xml │ │ │ └── attrs.xml │ │ ├── drawable-xhdpi │ │ │ ├── kong_error.png │ │ │ ├── return_icon.png │ │ │ └── sosuo_error.png │ │ ├── drawable-xxhdpi │ │ │ └── return_icon.png │ │ ├── drawable-xxxhdpi │ │ │ └── return_icon.png │ │ ├── drawable │ │ │ └── dialog_custom_bg.xml │ │ ├── anim │ │ │ ├── out_from_left.xml │ │ │ ├── in_from_left.xml │ │ │ ├── in_from_right.xml │ │ │ ├── out_from_right.xml │ │ │ ├── popshow.xml │ │ │ ├── push_in.xml │ │ │ ├── push_out.xml │ │ │ └── pophide.xml │ │ └── layout │ │ │ ├── layout_loading_view.xml │ │ │ ├── view_state_layout.xml │ │ │ ├── dialog_netwrok.xml │ │ │ ├── layout_empty_view.xml │ │ │ ├── activtiy_base_title.xml │ │ │ ├── layout_list.xml │ │ │ └── layout_error_view.xml │ │ ├── java │ │ └── com │ │ │ └── exmple │ │ │ └── baselib │ │ │ ├── state │ │ │ ├── IListBean.kt │ │ │ ├── IStateBean.kt │ │ │ ├── IStateView.kt │ │ │ └── StateView.kt │ │ │ ├── mvp │ │ │ ├── BasePresenterKt.kt │ │ │ ├── BaseModelKt.kt │ │ │ ├── BaseMvpFragment.kt │ │ │ ├── BaseMvpActivity.kt │ │ │ ├── BaseMvpListFragment.kt │ │ │ ├── BaseMvpListActivity.kt │ │ │ ├── BaseMvpTitleListActivity.kt │ │ │ ├── MVPInterface.kt │ │ │ ├── BaseMvpTitleActivity.kt │ │ │ └── BaseMvpPhotoActivity.kt │ │ │ ├── http │ │ │ ├── constant │ │ │ │ ├── CodeStatus.kt │ │ │ │ └── URLConstant.kt │ │ │ ├── entity │ │ │ │ └── BaseBean.kt │ │ │ ├── retrofit │ │ │ │ └── RetrofitFactory.kt │ │ │ └── MHttpExt.kt │ │ │ ├── scheduler │ │ │ ├── SchedulerUtils.kt │ │ │ ├── IoMainScheduler.kt │ │ │ ├── SingleMainScheduler.kt │ │ │ ├── ComputationMainScheduler.kt │ │ │ ├── NewThreadMainScheduler.kt │ │ │ ├── TrampolineMainScheduler.kt │ │ │ └── BaseScheduler.kt │ │ │ ├── utils │ │ │ ├── LogCatStrategy.kt │ │ │ ├── MEventBusUtils.kt │ │ │ ├── RxTimerUtil.kt │ │ │ ├── CleanLeakUtils.kt │ │ │ ├── DisplayManager.kt │ │ │ ├── ActivityUtils.kt │ │ │ ├── ProgressDialogUtils.java │ │ │ ├── PhotoUtils.kt │ │ │ ├── CommonUtil.kt │ │ │ └── SpannableStringUtils.java │ │ │ └── base │ │ │ ├── LibApplication.kt │ │ │ ├── BaseFragment.kt │ │ │ └── BaseActivity.kt │ │ └── AndroidManifest.xml ├── gradle.properties ├── proguard-rules.pro └── build.gradle ├── settings.gradle ├── image ├── a.png ├── aa.png ├── b.png ├── c.png └── code.jpg ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .gitignore ├── gradle.properties ├── README.md ├── gradlew.bat ├── config.gradle ├── gradlew └── LICENSE /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /baselib/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':baselib' 2 | -------------------------------------------------------------------------------- /image/a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/image/a.png -------------------------------------------------------------------------------- /image/aa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/image/aa.png -------------------------------------------------------------------------------- /image/b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/image/b.png -------------------------------------------------------------------------------- /image/c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/image/c.png -------------------------------------------------------------------------------- /image/code.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/image/code.jpg -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | BaseMVP 3 | 4 | -------------------------------------------------------------------------------- /baselib/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 组件化 3 | 4 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /baselib/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /baselib/src/main/java/com/exmple/baselib/state/IListBean.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baselib.state 2 | 3 | interface IListBean { 4 | val list: List 5 | } -------------------------------------------------------------------------------- /baselib/src/main/res/drawable-xhdpi/kong_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/baselib/src/main/res/drawable-xhdpi/kong_error.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /baselib/src/main/res/drawable-xhdpi/return_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/baselib/src/main/res/drawable-xhdpi/return_icon.png -------------------------------------------------------------------------------- /baselib/src/main/res/drawable-xhdpi/sosuo_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/baselib/src/main/res/drawable-xhdpi/sosuo_error.png -------------------------------------------------------------------------------- /baselib/src/main/res/drawable-xxhdpi/return_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/baselib/src/main/res/drawable-xxhdpi/return_icon.png -------------------------------------------------------------------------------- /baselib/src/main/res/drawable-xxxhdpi/return_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mouxuefei/KotlinMvpExample/HEAD/baselib/src/main/res/drawable-xxxhdpi/return_icon.png -------------------------------------------------------------------------------- /baselib/src/main/java/com/exmple/baselib/mvp/BasePresenterKt.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baselib.mvp 2 | 3 | open class BasePresenterKt { 4 | var mView: V? = null 5 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/libraries 5 | /.idea/modules.xml 6 | /.idea/workspace.xml 7 | .DS_Store 8 | /build 9 | /captures 10 | .externalNativeBuild 11 | /.idea 12 | /.idea/codeStyles/Project.xml 13 | -------------------------------------------------------------------------------- /baselib/src/main/java/com/exmple/baselib/state/IStateBean.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baselib.state 2 | 3 | interface IStateBean> { 4 | val code: Int 5 | val result: DATA? 6 | fun isOk(): Boolean = 1 == code 7 | } -------------------------------------------------------------------------------- /baselib/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /baselib/src/main/java/com/exmple/baselib/mvp/BaseModelKt.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baselib.mvp 2 | 3 | import io.reactivex.disposables.CompositeDisposable 4 | 5 | open class BaseModelKt { 6 | val mDisposablePool: CompositeDisposable by lazy { CompositeDisposable() } 7 | } -------------------------------------------------------------------------------- /baselib/src/main/res/drawable/dialog_custom_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Thu Jun 28 14:43:47 CST 2018 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip 7 | -------------------------------------------------------------------------------- /app/src/main/java/com/exmple/baseprojectmvp/http/MainDataBean.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baseprojectmvp.http 2 | 3 | /** 4 | * @FileName: MainDataBean.java 5 | * @author: villa_mou 6 | * @date: 09-11:25 7 | * @version V1.0 <描述当前版本功能> 8 | * @desc 9 | */ 10 | data class MainDataBean(var name:String) -------------------------------------------------------------------------------- /baselib/src/main/java/com/exmple/baselib/http/constant/CodeStatus.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baselib.http.constant 2 | 3 | /** 4 | * Created by mou on 2017/9/28. 5 | */ 6 | 7 | object CodeStatus { 8 | 9 | //一般请求的成功 10 | val SUCCESS = 1 11 | 12 | //重新登录 13 | val LOGIN_OUT=-2 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/exmple/baseprojectmvp/APP.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baseprojectmvp 2 | 3 | import com.exmple.baselib.base.LibApplication 4 | 5 | /** 6 | * @FileName: APP.java 7 | * @author: villa_mou 8 | * @date: 06-16:51 9 | * @version V1.0 <描述当前版本功能> 10 | * @desc 11 | */ 12 | class APP: LibApplication() { 13 | } -------------------------------------------------------------------------------- /baselib/src/main/java/com/exmple/baselib/scheduler/SchedulerUtils.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baselib.scheduler 2 | 3 | /** 4 | * Created by xuhao on 2017/11/17. 5 | * desc: 6 | */ 7 | 8 | object SchedulerUtils { 9 | 10 | fun ioToMain(): IoMainScheduler { 11 | return IoMainScheduler() 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /baselib/gradle.properties: -------------------------------------------------------------------------------- 1 | GROUP_ID = com.mouxuefei.mvp 2 | ARTIFACTID =vp 3 | LIBRARY_VERSION=1.0.0 4 | 5 | SNAPSHOT_REPOSITORY_URL=http://192.168.10.124:8081/nexus/content/repositories/snapshots/ 6 | RELEASE_REPOSITORY_URL=http://192.168.10.124:8081/nexus/content/repositories/releases/ 7 | 8 | NEXUS_USERNAME=admin 9 | NEXUS_PASSWORD=admin123 10 | 11 | -------------------------------------------------------------------------------- /baselib/src/main/java/com/exmple/baselib/scheduler/IoMainScheduler.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baselib.scheduler 2 | 3 | import io.reactivex.android.schedulers.AndroidSchedulers 4 | import io.reactivex.schedulers.Schedulers 5 | 6 | /** 7 | * Created by xuhao on 2017/11/17. 8 | * desc: 9 | */ 10 | class IoMainScheduler : BaseScheduler(Schedulers.io(), AndroidSchedulers.mainThread()) 11 | -------------------------------------------------------------------------------- /baselib/src/main/res/anim/out_from_left.xml: -------------------------------------------------------------------------------- 1 | 5 | 11 | 12 | -------------------------------------------------------------------------------- /baselib/src/main/java/com/exmple/baselib/http/constant/URLConstant.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baselib.http.constant 2 | 3 | /** 4 | * @FileName: com.mou.demo.http.constant.URLConstant.java 5 | * @author: mouxuefei 6 | * @date: 2017-12-21 14:49 7 | * @version V1.0 <描述当前版本功能> 8 | * @desc 9 | */ 10 | object URLConstant { 11 | const val BASE_URL = "http://www.baidu.com/" 12 | 13 | 14 | } 15 | -------------------------------------------------------------------------------- /baselib/src/main/res/anim/in_from_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 12 | 13 | -------------------------------------------------------------------------------- /baselib/src/main/res/anim/in_from_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 12 | 13 | -------------------------------------------------------------------------------- /baselib/src/main/res/anim/out_from_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 12 | 13 | -------------------------------------------------------------------------------- /baselib/src/main/java/com/exmple/baselib/scheduler/SingleMainScheduler.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baselib.scheduler 2 | 3 | import io.reactivex.android.schedulers.AndroidSchedulers 4 | import io.reactivex.schedulers.Schedulers 5 | 6 | /** 7 | * Created by xuhao on 2017/11/17. 8 | * desc: 9 | */ 10 | 11 | 12 | class SingleMainScheduler private constructor() : BaseScheduler(Schedulers.single(), AndroidSchedulers.mainThread()) 13 | -------------------------------------------------------------------------------- /baselib/src/main/java/com/exmple/baselib/scheduler/ComputationMainScheduler.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baselib.scheduler 2 | 3 | import io.reactivex.android.schedulers.AndroidSchedulers 4 | import io.reactivex.schedulers.Schedulers 5 | /** 6 | * Created by xuhao on 2017/11/17. 7 | * desc: 8 | */ 9 | 10 | 11 | class ComputationMainScheduler private constructor() : BaseScheduler(Schedulers.computation(), AndroidSchedulers.mainThread()) 12 | -------------------------------------------------------------------------------- /baselib/src/main/java/com/exmple/baselib/scheduler/NewThreadMainScheduler.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baselib.scheduler 2 | 3 | import io.reactivex.android.schedulers.AndroidSchedulers 4 | import io.reactivex.schedulers.Schedulers 5 | 6 | /** 7 | * Created by xuhao on 2017/11/17. 8 | * desc: 9 | */ 10 | 11 | 12 | class NewThreadMainScheduler private constructor() : BaseScheduler(Schedulers.newThread(), AndroidSchedulers.mainThread()) 13 | -------------------------------------------------------------------------------- /baselib/src/main/java/com/exmple/baselib/scheduler/TrampolineMainScheduler.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baselib.scheduler 2 | 3 | import io.reactivex.android.schedulers.AndroidSchedulers 4 | import io.reactivex.schedulers.Schedulers 5 | 6 | /** 7 | * Created by xuhao on 2017/11/17. 8 | * desc: 9 | */ 10 | 11 | 12 | class TrampolineMainScheduler private constructor() : BaseScheduler(Schedulers.trampoline(), AndroidSchedulers.mainThread()) 13 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /baselib/src/main/res/anim/popshow.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 9 | 13 | 14 | -------------------------------------------------------------------------------- /baselib/src/main/res/anim/push_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | -------------------------------------------------------------------------------- /baselib/src/main/res/anim/push_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/exmple/baseprojectmvp/mvp/model/LoginModel.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baseprojectmvp.mvp.model 2 | 3 | import com.exmple.baseprojectmvp.mvp.contract.ILoginContract 4 | import com.exmple.baselib.mvp.BaseModelKt 5 | 6 | /** 7 | * Description : 8 | * @author mouxuefei 9 | * @date 2018/7/6 14:10 10 | * - generate by MvpAutoCodePlus plugin. 11 | */ 12 | 13 | class LoginModel : BaseModelKt(), ILoginContract.Model { 14 | 15 | } 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/exmple/baseprojectmvp/http/MainApi.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baseprojectmvp.http 2 | 3 | import io.reactivex.Observable 4 | import retrofit2.http.POST 5 | 6 | /** 7 | * FileName: com.beijing.zhagen.meiqi.http.api.MainApi.java 8 | * Author: mouxuefei 9 | * date: 2018/3/20 10 | * version: V1.0 11 | * desc: 12 | */ 13 | interface MainApi { 14 | 15 | /** 16 | * 主页接口 17 | */ 18 | @POST("main/init") 19 | fun getMainData(): Observable 20 | 21 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/adapter_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /baselib/src/main/res/anim/pophide.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_simple.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /baselib/src/main/java/com/exmple/baselib/http/entity/BaseBean.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baselib.http.entity 2 | 3 | /** 4 | * @version V1.0 <描述当前版本功能> 5 | * @FileName: BaseBean.java 6 | * @author: villa_mou 7 | * @date: 05-19:24 8 | * @desc 9 | */ 10 | data class BaseBean constructor(var data: T, var errorCode: Int, var errorMsg: String) 11 | 12 | data class ListBean( 13 | val curPage: Int, 14 | val datas: List, 15 | val offset: Int, 16 | val over: Boolean, 17 | val pageCount: Int, 18 | val size: Int, 19 | val total: Int 20 | ) 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/exmple/baseprojectmvp/mvp/contract/ILoginContract.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baseprojectmvp.mvp.contract 2 | 3 | import com.exmple.baselib.mvp.IModel 4 | import com.exmple.baselib.mvp.IPresenter 5 | import com.exmple.baselib.mvp.IView 6 | 7 | /** 8 | * Description : 9 | * @author mouxuefei 10 | * @date 2018/7/6 14:10 11 | * - generate by MvpAutoCodePlus plugin. 12 | */ 13 | 14 | interface ILoginContract { 15 | interface View : IView {} 16 | interface Presenter : IPresenter {} 17 | interface Model : IModel {} 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/exmple/baseprojectmvp/mvp/adapter/DemoAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baseprojectmvp.mvp.adapter 2 | 3 | import com.chad.library.adapter.base.BaseQuickAdapter 4 | import com.chad.library.adapter.base.BaseViewHolder 5 | import com.exmple.baseprojectmvp.R 6 | 7 | /** 8 | * @FileName: ListAdapter.java 9 | * @author: villa_mou 10 | * @date: 07-10:51 11 | * @version V1.0 <描述当前版本功能> 12 | * @desc 13 | */ 14 | class DemoAdapter(var data: ArrayList):BaseQuickAdapter(R.layout.adapter_item,data) { 15 | override fun convert(helper: BaseViewHolder?, item: String?) { 16 | 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/main/java/com/exmple/baseprojectmvp/mvp/presenter/LoginPresenter.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baseprojectmvp.mvp.presenter 2 | 3 | import com.exmple.baseprojectmvp.mvp.contract.ILoginContract 4 | import com.exmple.baseprojectmvp.mvp.model.LoginModel 5 | import com.exmple.baselib.mvp.BasePresenterKt 6 | 7 | /** 8 | * Description : 9 | * @author mouxuefei 10 | * @date 2018/7/6 14:10 11 | * - generate by MvpAutoCodePlus plugin. 12 | */ 13 | 14 | class LoginPresenter : BasePresenterKt(), ILoginContract.Presenter { 15 | override var mModel: ILoginContract.Model? =LoginModel() 16 | 17 | } 18 | 19 | -------------------------------------------------------------------------------- /baselib/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #4FE183 5 | 6 | #4FE183 7 | 8 | #ffffff 9 | 10 | #4FE183 11 | #666666 12 | 13 | #69696C 14 | 15 | #ff000000 16 | 17 | #dfdfdf 18 | 19 | #999999 20 | 21 | #858585 22 | 23 | #00ffffff 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/exmple/baseprojectmvp/mvp/model/MainModel.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baseprojectmvp.mvp.model 2 | 3 | import com.exmple.baseprojectmvp.http.MainDataBean 4 | import com.exmple.baseprojectmvp.http.MainRetrofit 5 | import com.exmple.baseprojectmvp.mvp.contract.IMainContact 6 | import com.exmple.baselib.mvp.BaseModelKt 7 | import io.reactivex.Observable 8 | 9 | /** 10 | * @FileName: MainModel.java 11 | * @author: villa_mou 12 | * @date: 07-16:19 13 | * @version V1.0 <描述当前版本功能> 14 | * @desc 15 | */ 16 | class MainModel : BaseModelKt(), IMainContact.Model { 17 | override fun getMainData(): Observable { 18 | return MainRetrofit.apiService.getMainData() 19 | } 20 | } -------------------------------------------------------------------------------- /baselib/src/main/java/com/exmple/baselib/utils/LogCatStrategy.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baselib.utils 2 | 3 | import android.util.Log 4 | 5 | import com.orhanobut.logger.LogStrategy 6 | 7 | /** 8 | * 解决 as3.0之后logcat显示问题 9 | */ 10 | class LogCatStrategy : LogStrategy { 11 | 12 | private var last: Int = 0 13 | override fun log(priority: Int, tag: String?, message: String) { 14 | Log.println(priority, randomKey() + tag!!, message) 15 | } 16 | 17 | private fun randomKey(): String { 18 | var random = (10 * Math.random()).toInt() 19 | if (random == last) { 20 | random = (random + 1) % 10 21 | } 22 | last = random 23 | return random.toString() 24 | } 25 | } -------------------------------------------------------------------------------- /baselib/src/main/java/com/exmple/baselib/utils/MEventBusUtils.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baselib.utils 2 | 3 | import org.greenrobot.eventbus.EventBus 4 | import org.jetbrains.annotations.NotNull 5 | 6 | /** 7 | * @FileName: EventBusUtils.java 8 | * @author: villa_mou 9 | * @date: 08-10:15 10 | * @version V1.0 <描述当前版本功能> 11 | * @desc 12 | */ 13 | 14 | fun register(@NotNull obj: Any) { 15 | if (!EventBus.getDefault().isRegistered(obj)) { 16 | EventBus.getDefault().register(obj) 17 | } 18 | } 19 | 20 | fun unregister(@NotNull obj: Any) { 21 | if (EventBus.getDefault().isRegistered(obj)) { 22 | EventBus.getDefault().unregister(obj) 23 | } 24 | } 25 | 26 | fun sendEvent(@NotNull obj: Any) { 27 | EventBus.getDefault().post(obj) 28 | } 29 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | org.gradle.jvmargs=-Xmx1536m 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel=true 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/exmple/baseprojectmvp/http/MainRetrofit.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baseprojectmvp.http 2 | 3 | import com.exmple.baselib.http.retrofit.RetrofitFactory 4 | import okhttp3.Request 5 | 6 | /** 7 | * FileName: com.beijing.zhagen.meiqi.http.retrofit.MainRetrofit.java 8 | * Author: mouxuefei 9 | * date: 2018/3/20 10 | * version: V1.0 11 | * desc: 12 | */ 13 | 14 | object MainRetrofit : RetrofitFactory() { 15 | override fun getBaseUrl()= "http://www.baidu.com" 16 | 17 | override fun getHeader(builder: Request.Builder): Request.Builder { 18 | builder.addHeader("token","XXXXXXXXXXXXXXXXXXXXX") 19 | return builder 20 | } 21 | 22 | override fun getApiService(): Class { 23 | return MainApi::class.java 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /app/src/main/java/com/exmple/baseprojectmvp/mvp/presenter/MainPresenter.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baseprojectmvp.mvp.presenter 2 | 3 | import com.exmple.baselib.http.mSubscribe 4 | import com.exmple.baselib.mvp.BasePresenterKt 5 | import com.exmple.baseprojectmvp.mvp.contract.IMainContact 6 | import com.exmple.baseprojectmvp.mvp.model.MainModel 7 | 8 | /** 9 | * @FileName: MainPresenter.java 10 | * @author: villa_mou 11 | * @date: 06-16:35 12 | * @version V1.0 <描述当前版本功能> 13 | * @desc 14 | */ 15 | class MainPresenter : BasePresenterKt(), IMainContact.Presenter { 16 | override var mModel: IMainContact.Model? = MainModel() 17 | override fun getDataByNet() { 18 | mModel?.getMainData()?.mSubscribe(mView,mModel){ 19 | 20 | } 21 | 22 | } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/exmple/baseprojectmvp/mvp/contract/IMainContact.kt: -------------------------------------------------------------------------------- 1 | package com.exmple.baseprojectmvp.mvp.contract 2 | 3 | import com.exmple.baseprojectmvp.http.MainDataBean 4 | import com.exmple.baselib.mvp.IListView 5 | import com.exmple.baselib.mvp.IModel 6 | import com.exmple.baselib.mvp.IPresenter 7 | import io.reactivex.Observable 8 | 9 | /** 10 | * @FileName: IMainContact.java 11 | * @author: villa_mou 12 | * @date: 06-16:34 13 | * @version V1.0 <描述当前版本功能> 14 | * @desc 15 | */ 16 | interface IMainContact { 17 | interface View : IListView { 18 | fun getDataSuccess() 19 | } 20 | 21 | interface Presenter : IPresenter { 22 | fun getDataByNet() 23 | } 24 | 25 | interface Model : IModel { 26 | fun getMainData(): Observable 27 | } 28 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 |