FlyTour 新闻客户端是 Android MVP+Dagger2+Retrofit+RxJava+组件化项目框架

FlyTour

项目地址:geduo83/FlyTour 

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

更多:作者   提 Bug   

标签:

 

 

Latest Stable Version Min Sdk Version License Author QQ Group

欢迎加星,打 call https://github.com/geduo83/FlyTour 在使用中有任何问题,请留言,或加入 Android、Java 开发技术交流群

 

  • QQ 群:810970432
  • email:geduo_83@163.com

更新日志:

FlyTour 2.1.0 2019-06-06

  • 1.Presenter 实例的创建由 Dagger2 完成
  • 2.Modle 实例的创建有 Dagger2 完成
  • 3.DAO 实例的创建由 Dagger2 完成

FlyTour 2.0.0 2019-05-30

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

  • 新闻类型添加、删除、展示
  • 新闻添加、展示
  • 支持是否启用 ToolBar
  • 支持自定义 ToolBar
  • 支持 loading 加载数据
  • 支持透明 loading 的加载数据
  • 支持显示无数据
  • 支持网络网络错误显示
  • 支持 Fragment 的懒加载
  • 支持最基本的下拉刷新、上拉加载更多
  • 支持自定义 HeadView 和 FootView
  • 支持自动刷新
  • 支持启用、禁用下拉刷新
  • 支持启用、进攻上拉加载更多
  • 通用小菊花样式 DaisyRefreshLayout
  • 通用小箭头样式 ArrowRefreshLayout

FlyTour 1.1.0 2019-03-34

  • 增加了功能组件日期选择器 lib_time_picker
  • MVP 功能的一些优化

FlyTour 1.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<M,V>> extends BaseActivity {
    ...
    }
    
  • BaseRefreshActivity
    public abstract class BaseRefreshActivity<M extends BaseModel, V extends BaseRefreshView<T>, P extends BaseRefreshPresenter<M, V, T>, T> extends BaseMvpActivity<M, V, P> implements BaseRefreshView<T> {
    }
    
  • 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

### 项目架构
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190530154504970.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9tZW54aW5kaWFvbG9uZy5ibG9nLmNzZG4ubmV0,size_16,color_FFFFFF,t_70)
* 集成模式:所有的业务组件被“app 壳工程”依赖,组成一个完整的 APP;
* 组件模式:可以独立开发业务组件,每一个业务组件就是一个 APP;
* app 壳工程:负责管理各个业务组件,和打包 apk,没有具体的业务功能;
* 业务组件:根据公司具体业务而独立形成一个的工程;
* 功能组件:提供开发 APP 的某些基础功能,例如打印日志、下拉刷新控件等;
* Main 组件:属于业务组件,指定 APP 启动页面、主界面;
* Common 组件:属于功能组件,支撑业务组件的基础,提供多数业务组件需要的功能


### MVP 架构
这是整个项目的 mvp 结构图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190530144533636.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9tZW54aW5kaWFvbG9uZy5ibG9nLmNzZG4ubmV0,size_16,color_FFFFFF,t_70)
* Activity 关系图:<br>
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190407122859375.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dlZHVvXzgz,size_16,color_FFFFFF,t_70)
### 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

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190530142030271.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9tZW54aW5kaWFvbG9uZy5ibG9nLmNzZG4ubmV0,size_16,color_FFFFFF,t_70)

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

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190530142043496.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9tZW54aW5kaWFvbG9uZy5ibG9nLmNzZG4ubmV0,size_16,color_FFFFFF,t_70)
### 组件之间 AndroidManifest 合并问题
我们可以为组件开发模式下的业务组件再创建一个 AndroidManifest.xml,然后根据 isModule 指定 AndroidManifest.xml 的文件路径,让业务组件在集成模式和组件模式下使用不同的 AndroidManifest.xml,这样表单冲突的问题就可以规避了
已 module_main 组件为例配置如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190530150350275.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9tZW54aW5kaWFvbG9uZy5ibG9nLmNzZG4ubmV0,size_16,color_FFFFFF,t_70)

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 进行配置
配图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190530142154452.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9tZW54aW5kaWFvbG9uZy5ibG9nLmNzZG4ubmV0,size_16,color_FFFFFF,t_70)
### 集成开发模式下的 Application
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190530150933283.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9tZW54aW5kaWFvbG9uZy5ibG9nLmNzZG4ubmV0,size_16,color_FFFFFF,t_70)

### 问题反馈
欢迎加星,打 call https://github.com/geduo83/FlyTour
在使用中有任何问题,请留言,或加入 Android、Java 开发技术交流群
* QQ 群:810970432
* email:geduo_83@163.com
![](https://img-blog.csdnimg.cn/20190126213618911.png)
### 关于作者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值