轻量级的Android MVP快速开发框架
Java
Latest commit 234ff95 Jan 9, 2017 @limedroid add loginterceptor
Permalink
Failed to load latest commit information.
app add log for net Jan 7, 2017
art update readme Jan 1, 2017
gradle/wrapper add mvp Dec 23, 2016
mvp add loginterceptor Jan 9, 2017
LICENSE add license Jan 4, 2017
Readme.md update readme Jan 1, 2017
build.gradle add mvp Dec 23, 2016
conf.gradle opt mvp Dec 31, 2016
gradle.properties add mvp Dec 23, 2016
gradlew add mvp Dec 23, 2016
gradlew.bat add mvp Dec 23, 2016
mvp.png update readme Jan 1, 2017
settings.gradle add mvp Dec 23, 2016
xdroid_logo_128.png

Readme.md

XDroidMvp 轻量级的Android MVP快速开发框架

概述

XDroidMvpXDroidAndroid快速开发框架的MVP版本,其使用方式类似于XDroid,大部分源码也来自XDroid

XDroidMvp主要会有这些特性:

无需写Contract! 无需写Present接口! 无需写View接口!

新增:

  • Mvp实现
  • RxJava & RxAndroid
  • 权限适配 RxPermission
  • 事件订阅默认采用 RxBus
  • 网络交互:
    • Retrofit + rx
    • Https
    • 统一异常处理
    • 缓存
    • 。。。。
  • 无需担心rx内存泄漏

保留:

  • 提供XActivityXFragmentSimpleRecAdapterSimpleListAdapter等基类,可快速进行开发
  • 完整封装XRecyclerView,可实现绝大部分需求
  • QTContentLayoutXRecyclerContentLayout实现loading、error、empty、content四种状态的自由切换
  • 实现了MemoryDiskSharedPreferences三种方式的缓存,可自由扩展
  • 内置了RxBus,可自由切换到其他事件订阅库
  • 内置Glide,可自由切换其他图片加载库
  • 可输出漂亮的Log,支持JsonXmlThrowable等,蝇量级实现
  • 内置链式路由
  • 内置常用工具类:packagerandomfile...,提供的都是非常常用的方法
  • 内置加密工具类 XCodec,你想要的加密姿势都有

先睹为快

你可以这么使用:

BasePagerFragment

public abstract class BasePagerFragment extends XFragment<PBasePager>{

   @Override
    public void initData(Bundle savedInstanceState) {
        getP().loadData(getType(), 1);  //调用P方法
    }

   public void showData(int page, GankResults model) {
        if (page > 1) {
            getAdapter().addData(model.getResults());
        } else {
            getAdapter().setData(model.getResults());
        }

        contentLayout.getRecyclerView().setPage(page, MAX_PAGE);

        if (getAdapter().getItemCount() < 1) {
            contentLayout.showEmpty();
            return;
        }
    }

     @Override
    public PBasePager newP() {
        return new PBasePager();
    }}

    @Override
    public int getLayoutId() {
        return R.layout.fragment_base_pager;
    }

PBasePager

public class PBasePager extends XPresent<BasePagerFragment> {
    protected static final int PAGE_SIZE = 10;


    public void loadData(String type, final int page) {
        Api.getGankService().getGankData(type, PAGE_SIZE, page)
                .compose(XApi.<GankResults>getApiTransformer())
                .compose(XApi.<GankResults>getScheduler())
                .subscribe(new ApiSubcriber<GankResults>() {
                    @Override
                    protected void onFail(NetError error) {
                        getV().showError(error); //调用V方法
                    }

                    @Override
                    public void onNext(GankResults gankResults) {
                        getV().showData(page, gankResults);
                    }
                });
    }
}

Get Started

使用,仅需四步:

step1

clone 'XDroid'库到本地:

git clone https://github.com/limedroid/XDroidMvp.git

step2

mvp作为依赖库,在您的app module 中 添加如下依赖:

compile project(':mvp')

step3

拷贝conf.gradle到您的项目根目录,并修改项目gradle文件下引入:

apply from: "conf.gradle"

并添加:

allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

step4

修改XDroidConf配置类,主要针对log、cache、router、imageloader。若采用默认配置,此步骤可略过.

Demo效果

重要说明

  • ButterKnife使用的是8.4.0版本,重点是 @BindView,可以去项目官网查看。
  • Rxlifecycle使用的是1.0版本,具体如何使用可以查看官网。
  • RxPermissions使用的是0.9.1版本,具体如何使用可以查看官网。
  • retrofit,具体如何使用可以查看官网。

更新日志

  • 2016-12-23,新增mvp、base、cache、event、imageloader、log、router
  • 2016-12-25,新增rxJava、rxAndroid、rxlifecycle、rxpermission、rxbus、net(retrofit)
  • 2016-12-26,新增网络异常统一处理
  • 2016-12-28,重构MVP
  • 2016-12-30,重构网络层
  • 2016-12-31,新增Demo

TODO

  • rx
  • retrofit
  • rxpermission
  • rxbus
  • cache
  • wiki
  • demo

About Me

Email : droidlover@126.com

XDroid交流群:153569290

XDroid MVC版本XDroid

若您在使用过程中遇到任何问题,欢迎加入 153569290 群或者是邮件反馈,谢谢您的关注。XDroidMvp会持续维护,如果喜欢,记得star fork。