Android组件化+MVP+RxJava+Retrofit+Dagger2项目框架FlyTour新闻客户端使用详解

FlyTour新闻客户端是Android组件化+MVP+RxJava+Retrofit+Dagger2项目框架,工程架构采用gradle配置实现组件化,模块的架构采用典型的MVP架构,帮助你快速的搭建自己的App项目开发框架,以便把主要的精力放在自己的项目的业务功能实现上,另外在长期的工作实践中总结整理大量的实用工具类在项目lib_common组件的util包当中方便大家调用

更新日志:

FlyTour2.0.0 2019-05-30

以新闻资讯为功能,对app的界面进行了全新的改版,由新闻列表展示、新闻详情展示、新闻添加、新闻类型添加、删除这几个简单的功能组成,基本上覆盖了整个框架的所有核心的、常用的一些功能

•新闻类型添加、删除、展示

•新闻添加、展示

•支持是否启用ToolBar

•支持自定义ToolBar

•支持loading加载数据

•支持透明loading的加载数据

•支持显示无数据

•支持网络网络错误显示

•支持Fragment的懒加载

•支持最基本的下拉刷新、上拉加载更多

•支持自定义HeadView和FootView

•支持自动刷新

•支持启用、禁用下拉刷新

•支持启用、进攻上拉加载更多

•通用小菊花样式DaisyRefreshLayout

•通用小箭头样式ArrowRefreshLayout

FlyTour1.1.0 2019-03-34

•增加了功能组件日期选择器lib_time_picker

•MVP功能的一些优化

FlyTour1.0.0 2019-01-26

•初始版本,以车辆运动轨迹大数据采集为功能简单的实现了组件化和MVP的基本功能

功能演示

新闻下来刷新、无数据、无网络、新闻详情展示

* 新闻类型添加、新闻添加

主要功能

核心公共组件lib_common

七的核心公用基类

•BaseActivity

public abstract class BaseActivity extends RxAppCompatActivity implements BaseView {
...
}

•BaseMvpActivity

public abstract class BaseMvpActivity<M extends BaseModel,V,P extends BasePresenter> extends BaseActivity {
...
}

•BaseRefreshActivity

public abstract class BaseRefreshActivity<M extends BaseModel, V extends BaseRefreshView, P extends BaseRefreshPresenter, T> extends BaseMvpActivity implements BaseRefreshView {
}

•BaseFragment

•BaseMvpFragment

•BaseRefreshFragment

•BaseAdapter

功能特色:

支持是否使用ToolBar

public boolean enableToolbar() {
    return true;
}

支持自定义ToolBar

public int onBindToolbarLayout() {
   return R.layout.common_toolbar;
}

支持loading加载数据

public void showInitLoadView() {
        showInitLoadView(true);
    }
    public void hideInitLoadView() {
        showInitLoadView(false);
    }

支持透明loading的加载数据

  @Override
    public void showTransLoadingView() {
        showTransLoadingView(true);
    }
    @Override
    public void hideTransLoadingView() {
        showTransLoadingView(false);
    }

支持显示无数据

  public void showNoDataView() {
        showNoDataView(true);
    }
    public void showNoDataView(int resid) {
        showNoDataView(true, resid);
    }
    public void hideNoDataView() {
        showNoDataView(false);
    }

支持网络网络错误显示

public void hideNetWorkErrView() {
        showNetWorkErrView(false);
    }
    public void showNetWorkErrView() {
        showNetWorkErrView(true);
    }

支持Fragment的懒加载

  private void lazyLoad() {
        //这里进行双重标记判断,必须确保onCreateView加载完毕且页面可见,才加载数据
         if (isViewCreated && isViewVisable) {
            initData();
            //数据加载完毕,恢复标记,防止重复加载
            isViewCreated = false;
            isViewVisable = false;
        }
    }
    //默认不启用懒加载
    public boolean enableLazyData() {
        return false;
    }

上拉下拉功能组件 lib_refresh_layout

支持最基本的下拉刷新、上拉加载更多

支持自定义HeadView和FootView

支持自动刷新

支持启用、禁用下拉刷新

支持启用、进攻上拉加载更多

通用小菊花样式DaisyRefreshLayout

通用小箭头样式ArrowRefreshLayout

项目架构

集成模式:所有的业务组件被“app壳工程”依赖,组成一个完整的APP;

组件模式:可以独立开发业务组件,每一个业务组件就是一个APP;

app壳工程:负责管理各个业务组件,和打包apk,没有具体的业务功能;

业务组件:根据公司具体业务而独立形成一个的工程;

功能组件:提供开发APP的某些基础功能,例如打印日志、下拉刷新控件等;

Main组件:属于业务组件,指定APP启动页面、主界面;

Common组件:属于功能组件,支撑业务组件的基础,提供多数业务组件需要的功能

MVP架构

这是整个项目的mvp结构图:

Activity关系图:

Fragment的类关系图

Fragment的类关系图和Activity类似具体详见common组件下的base包和mvp包

组件化实现:

FlyTour新闻客户端使用阿里ARouter作为路由,实现组件与组件的通信跳转

集成模式和组件模式转换

Module的属性是在每个组件的 build.gradle 文件中配置的,当我们在组件模式开发时,业务组件应处于application属性,这时的业务组件就是一个 Android App,可以独立开发和调试;而当我们转换到集成模式开发时,业务组件应该处于 library 属性,这样才能被我们的“app壳工程”所依赖,组成一个具有完整功能的APP

先打开FlyTour工程的根目录下找到gradle.properties 文件,然后将 isModule 改为你需要的开发模式(true/false), 然后点击 “Sync Project” 按钮同步项目

isModule=false

if (isModule.toBoolean()) {
    apply plugin: 'com.android.application'
} else {
    apply plugin: 'com.android.library'
}

组件之间AndroidManifest合并问题

我们可以为组件开发模式下的业务组件再创建一个 AndroidManifest.xml,然后根据isModule指定AndroidManifest.xml的文件路径,让业务组件在集成模式和组件模式下使用不同的AndroidManifest.xml,这样表单冲突的问题就可以规避了

已module_main组件为例配置如下:

sourceSets {
        main {
            if (isModule.toBoolean()) {
                manifest.srcFile 'src/main/module/AndroidManifest.xml'
            } else {
                manifest.srcFile 'src/main/AndroidManifest.xml'
            }
        }
}

组件模式下的Application

在每个组件的debug目录下创建一个Application并在module下的AndroidManifest.xml进行配置

配图:

集成开发模式下的Application

版权声明:本文来自门心叼龙的博客,属于原创内容,

转载请注明出处:https://menxindiaolong.blog.csdn.net/article/details/90693153

框架地址:https://github.com/geduo83/FlyTour