• Stars
    star
    3,142
  • Rank 14,308 (Top 0.3 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created almost 6 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🔥🔥🔥 FlyTour是Android MVVM+MVP+Dagger2+Retrofit+RxJava+组件化+插件组成的双编码架构+双工程架构+双语言Android应用开发框架,通过不断的升级迭代该框架已经有了十个不同的版本,5.0之前工程架构采用gradle配置实现组件化,5.0之后的工程架构采用VirtualAPK实现了插件化,5.0之前采用Java编码实现,5.0之后采用Kotlin编码实现,编码架构由MVVM和MVP组成,工程架构和编码架构及编码语言开发者可根据自己具体的项目实际需求去决定选择使用,该框架是Android组件化、Android插件化、Android MVP架构、Android MVVM架构的集大成者,帮助你快速的搭建自己的App项目开发框架,以便把主要的精力放在自己的项目的业务功能实现上,另外在长期的工作实践中总结整理大量的实用工具类在项目lib_common组件的util包当中方便大家调用。

Latest Stable Version Min Sdk Version License Author QQ Group

FlyTour是Android MVVM+MVP+Dagger2+Retrofit+RxJava+组件化+插件组成的双编码架构+双工程架构+双语言Android应用开发框架,通过不断的升级迭代该框架已经有了十个不同的版本,5.0之前工程架构采用gradle配置实现组件化,5.0之后的工程架构采用VirtualAPK实现了插件化,5.0之前采用Java编码实现,5.0之后采用Kotlin编码实现,编码架构由MVVM和MVP组成,工程架构和编码架构及编码语言开发者可根据自己具体的项目实际需求去决定选择使用,该框架是Android组件化、Android插件化、Android MVP架构、Android MVVM架构的集大成者,帮助你快速的搭建自己的App项目开发框架,以便把主要的精力放在自己的项目的业务功能实现上,另外在长期的工作实践中总结整理大量的实用工具类在项目lib_common组件的util包当中方便大家调用。

本框架的最大的特点就是和FlyCloud微服务框架配合使用,从移动前端和服务后端的一套完整解决方案,解决了很多开发者只会前端不会后端的问题,或者只会后端不会前端的问题,有了这两套框架,我们的开发不在受制于人。

通过不断的升级迭代,该框架已经有了十个不同的版本,FlyTour 4.2.0【组件化+MVVM+RxJava+Retrofit+DataBinding网络优化版】FlyTour 5.2.0【插件化+MVP+Kotlin标准版】FlyTour 5.1.0【插件化+MVP+Java标准版】5.0.0【组件化+MVP+Kotlin标准版】4.1.0【组件化+MVVM+RxJava+Retrofit+DataBinding升级版】4.0.0【组件化+MVVM+RxJava+Retrofit标准版】3.0.0【组件化+MVP+RxJava+Retrofit+Dagger2网络版】2.1.0【组件化+MVP+Dagger2版】2.0.0【组件化+MVP标准版】1.1.0【优化版】1.0.0【初始版】,各个版本都有不同的特性,基本涵盖了目前Android领域的主流开发架构,能满足不同阶段的Android开发者的使用需求,大家可根据自己的项目需求去选择自己所需要的版本。

FlyTour为组件化项目架构,它由自己的开源框架FlyTranslateFlyAndroidMVP基础上孵化出来的框架,如果需要单一结构体项目架构请下载FlyTranslate【MVP+RxJava+Retrofit+Dagger2】FlyFun【android mvp】

欢迎加星star,在使用中有任何问题,请留言,或加入Android、Java开发技术交流群

更新日志:

FlyTour 4.2.0【组件化+MVVM+RxJava+Retrofit+DataBinding网络优化版】 2020-03-23

该版本是在4.1.0的基础上对网络请求部分进行了优化,请求令牌Token通过拦截器统一处理,不必每个请求都单独携带Token,另外为了满足广大开发者的测试需求,对服务端FlyCloud进行了全新的升级,已经将后端代码部署在了外网上,接口文档如下:http://106.12.61.238:8080/swagger-ui.html

  • 网络请求token传递优化
  • 将所有的访问接口开放在外网上

FlyTour 5.2.0【插件化+MVP+Kotlin标准版】 2020-03-06

该版本是对5.0.0的Kotlin特性和5.1.0的VirtualAPK插件化特性进行了整合

  • 对所有功能用Kotlin重新编写
  • VirtualAPK框架的插件化支持

FlyTour 5.1.0【插件化+MVP+Java标准版】 2020-03-02

该版本是在2.0.0的基础上运用VirtualAPK框架对整个项目进行插件化改造,实现了组件化到插件化的完美升级,关于组件化和插件化的区别请查阅Android组件化方案最佳实践这篇文章

  • 运用VirtualAPK框架对整个项目进行插件化改造

FlyTour 5.0.0【组件化+MVP+Kotlin标准版】 2020-02-18

该版本是在2.0.0的基础上对所有的功能用Kotlin语言进行了重新编写,另外增加了对androidX的支持

  • 增加了对androidX的支持
  • 对所有功能用Kotlin重新编写

FlyTour 4.1.0【组件化+MVVM+RxJava+Retrofit+DataBinding升级版】 2019-07-07

组件化+MVVM+DataDinding+RxJava+Retrofit,在4.0.0的MVVM架构基础之上增加了DataBinding的特性,配合FlyCloud微服务系统共同使用

  • 增加了DataBinding的特性

FlyTour 4.0.0【组件化+MVVM+RxJava+Retrofit标准版】 2019-07-03

组件化+MVVM+RxJava+Retrofit,基本架构由3.0.0的MVP架构升级为MVVM架构,配合FlyCloud微服务系统共同使用

  • MVVM架构彻底改版

FlyTour 3.0.0【组件化+MVP+RxJava+Retrofit+Dagger2网络版】 2019-06-26

组件化+MVP+RxJava+Retrofit+Dagger2,该版本是在2.1.0的版本的基础之上对Model层的数据源做了升级,由本地数据源升级为网络数据源,配合FlyCloud微服务系统共同使用

  • 网络请求部分由Retrofit+RxJava完成

FlyTour 2.1.0【组件化+MVP+Dagger2版】 2019-06-06

组件化+MVP+Dagger2,该版本在2.0.0的基础上添加了Dagger2的特性,Present、Model的创建都由Dagger2自动完成

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

FlyTour 2.0.0【组件化+MVP标准版】 2019-05-30

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

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

FlyTour 1.1.0【优化版】 2019-03-34

  • MVP功能的一些优化

FlyTour 1.0.0【初始版】 2019-01-26

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

功能演示

  • 启动页
    在这里插入图片描述
  • 新闻下来刷新、无数据、无网络、新闻详情展示
  • 新闻类型添加、新闻添加

主要功能

核心公共组件lib_common

MVVM七大的核心公用基类

  • View层核接口IBaseView
interface IBaseView{
    void initView();
    void initListener();
    void initData();
    void finishActivity();
    void showInitLoadView(boolean show);
    void showNoDataView(boolean show);
    void showTransLoadingView(boolean show);
    void showNetWorkErrView(boolean show);
    Context getContext();
}
  • BaseActivity
abstract class BaseActivity implements IBaseView{
    public abstract int onBindLayout();
    public abstract void initView();
    public abstract void initData();
    public void initListener();
}
  • BaseMvvmActivity
abstract class BaseMvvmActivity extends BaseActivity{
 initViewDataBinding();
 initBaseViewObservable();
 initViewObservable();
}
  • BaseMvvmRefreshActivity
abstract class BaseMvvmRefreshActivity extends BaseMvvmActivity{
  private void initBaseViewRefreshObservable();
    public abstract DaisyRefreshLayout getRefreshLayout();
    public void initRefreshView();
    public void stopRefresh();
    public void stopLoadMore();
    public void autoLoadData();
}
  • BaseFragment
class BaseFragment implements IBaseView{
   initCommonView(mView);
        initView(mView);
        initListener();
}
  • BaseMvvmFragment
class BaseMvvmFragment extends BaseFragment{
  initViewModel();
        initBaseViewObservable();
        initViewObservable();
}
  • BaseMvvmRefreshFragment
class BaseMvvmRefreshFragment extends BaseMvvmFragment{
    private void initBaseViewRefreshObservable();
     public abstract DaisyRefreshLayout getRefreshLayout();
        public void initRefreshView();
        public void stopRefresh();
        public void stopLoadMore();
        public void autoLoadData() ;
}

MVP七大的核心公用基类

  • 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

项目架构

在这里插入图片描述

  • 集成模式:所有的业务组件被“app壳工程”依赖,组成一个完整的APP;
  • 组件模式:可以独立开发业务组件,每一个业务组件就是一个APP;
  • app壳工程:负责管理各个业务组件,和打包apk,没有具体的业务功能;
  • 业务组件:根据公司具体业务而独立形成一个的工程;
  • 功能组件:提供开发APP的某些基础功能,例如打印日志、下拉刷新控件等;
  • Main组件:属于业务组件,指定APP启动页面、主界面;
  • Common组件:属于功能组件,支撑业务组件的基础,提供多数业务组件需要的功能

MVVM架构

在这里插入图片描述

  • View层类关系图
    在这里插入图片描述
  • ViewModel层类关系图
    在这里插入图片描述
  • model层类关系图
    在这里插入图片描述

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

在这里插入图片描述

问题反馈

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

关于作者

var mxdl = {
    name : "门心叼龙",
    blog : "https://menxindiaolong.blog.csdn.net"
}

License

Copyright (C)  menxindiaolong, FlyTour Framework Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

More Repositories

1

spring-cloud-flycloud

🔥🔥🔥FlyClould 微服务实战项目框架,在该框架中,包括了用 Spring Cloud 构建微服务的一系列基本组件和框架,对于后台服务框架的搭建有很大的参考价值,大家可以参考甚至稍加修改可以直接应用于自己的实际的项目开发中,该项目没有采用Maven进行项目构建,Maven通过xml进行依赖管理,导致整个配置文件太过臃肿,另外灵活性也不是很强,所以我采用Gradle进行项目构建和依赖管理,在FlyTour项目中我们见证了Gradle的强大,通过简单的一些配置就可以轻松的实现组件化的功能。该项目共有11个Module工程。其中10个位微服务工程,这10个微服务工程构成了一个完整的微服务系统,微服务系统包含了8个基础服务,提供了一整套微服务治理功能,他们分别是配置中心module_config、注册中心module_eureka、认证授权中心module_uaa、Turbine聚合监控服务module_monitor、链路追踪服务module_zipken、聚合监控服务module_admin、路由网关服务module_gateway、日志服务module_log。另外还包含了两个资源服务:用户服务module_user和blog服务module_blog,另外还有一个common的Module,为资源服务提供一些一本的工具类
Java
1,582
star
2

android-fly-materialdesign

Android Activity换场动画类 :通用Activity换场动画,高级Activity换场动画 APP打开引导页:图片引导,视频引导 导航菜单类:TabLayout菜单、FragmentTabHost菜单、FragmentTabHost菜单 + ViewPager菜单、菜单拖拉重新排列、可删除 广告轮播类 数据列表类:RecycleView可拖拉重新排列、可删除 Material Design支持库相关效果 日历相关效果:高仿小米日历、年月切换动画、滚动年日历、滚动月日历、左右翻页月日历
Java
456
star
3

android-mvp-dagger2-flytranslate

MVP+RxJava+Retrofit+Dagger2, FlyTranslate是基于MVP开发的Android应用程序的通用架构集成了许多开源项目如Dagger2,RxJava,Retrofit ,使您的开发更快捷,更轻松。
Java
182
star
4

android-fly-refreshlayout

FlyRefreshLayout刷新组件基于SuperSwipeRefreshLayout进行二次开发,增加了通用小菊花样式DaisyRefreshLayout刷新控件和通用小箭头样式ArrowRefreshLayout刷新控件,支持RecyclerView,NestedScrollView,ScrollView 、ListView,GridView,能自定义HeadView和FooterView,不但支持最基本的下拉刷新、上拉加载更多,还在其基础上扩展了是否启用下拉刷新、是否启用上拉加载更多、增加了自动刷新功能,优化了下拉刷新监听器、上拉加载更多监听器,增加了自动刷新监听器,使其调用更加的方便
Java
74
star
5

android-amap-track-collect

这阵子由于项目需要,需要从手机上采集用户的运动轨迹数据,这样的功能大家都见到的很多了,比如咕咚、悦动圈,对跑步运动轨迹数据进行采集,再如,微信运动、钉钉运动,对于每一天你走步进行计数,如果要记录轨迹就离不开的手机定位,如果要记录步数那就离不开陀螺仪(角速度传感器),花了一天多的时间实现了一个定位数据实时采集的功能。
Java
63
star
6

android-amap-track-move

Android车辆运动轨迹平滑移动(高仿滴滴打车)最佳实践
Java
37
star
7

AudioRecorder

Android 音频录制、播放,最近在项目要用到录音的功能,研究了几天,看了很多的资料,今天在这里分享记录一下以便回头查看。Android给我们提供了两个录音的API接口:MediaRecord、AudioRecoder
Java
25
star
8

android-mvp-flyfun

android mvp项目框架,Activity和Fragment为View层,负责UI的显示,Presenter为业务处理层,既能调用UI逻辑,又能请求数据,该层为纯Java类,不涉及任何Android API。 Model层中包含着具体的数据请求,数据源,三层之间调用顺序为view->presenter->model
Java
18
star
9

android-amap-drivingbehavior-collect

传感器分类:感知环境的、感知距离的、感知运动的、感知方位的
Java
11
star
10

java-data-algorithm

数据是基础,算法是灵魂
Java
9
star
11

FlyHttp

okhttp 简单封装
Java
8
star
12

android-custom-view

android custom view
Java
7
star
13

android-touch-event

事件分发好比是领导给下属派活,假如有一个小公司,就三个级别,老板,经理,员工,老板现在有一个任务,他首先会把这是任务派给经理,然后经理接到这个任务,会把这个任务交给下面的员工去完成,如果这个员工觉得这个任务能搞定,那么他就把这个任务完成了,如果搞不定他会告诉他们的经理,经理拿到这个任务之后,如果经理能搞定,经理就自己完成了,如果他也搞不定,他就会去找老板,最终老板自己把这个任务给完成了。这个过程是不是和我们的View事件分发很像,简直是太形象了,我非常佩服谷歌的这些大神们,他们把事件传递机制设计的竟如此精妙。
Java
6
star
14

FlySpringMvc

java SpringMvc
JavaScript
3
star
15

android-mvp-flytour-kotlin

android-mvp-flytour-kotlin
Kotlin
3
star
16

FlyEwsSSH

Java SSH
Java
2
star
17

designmode

designmode
Java
2
star
18

FlyDagger2

FlyDagger2
1
star
19

jcsmanager

ASP
ASP
1
star
20

kotlin-example

kotlin-example
Kotlin
1
star
21

js-css-dingding-vcars

js-css-dingding-vcars
Vue
1
star
22

android-dagger2

android-dagger2
Java
1
star
23

HorizontalCenterRecycleView

HorizontalCenterRecycleView
1
star