All Projects → doudouaili → RxFamilyUser

doudouaili / RxFamilyUser

Licence: other
框架使用retrofit2与rxjava2+databing,Md风格一个开源项目.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to RxFamilyUser

Android Mvp Mvvm Flytour
🔥🔥🔥 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项目开发框架,以便把主要的精…
Stars: ✭ 2,948 (+13938.1%)
Mutual labels:  rxjava2, retrofit2, databinding
Mvvmhabit
goldze: 本人喜欢尝试新的技术,以后发现有好用的东西,我将会在企业项目中实战,没有问题了就会把它引入到MVVMHabit中,一直维护着这套框架,谢谢各位朋友的支持。如果觉得这套框架不错的话,麻烦点个 star,你的支持则是我前进的动力!
Stars: ✭ 6,789 (+32228.57%)
Mutual labels:  rxjava2, retrofit2, databinding
Paonet
【MVVM+RxJava2+AspectJ】泡网第三方客户端,网站主页:http://www.jcodecraeer.com/index.php
Stars: ✭ 374 (+1680.95%)
Mutual labels:  rxjava2, retrofit2, databinding
RxRetroAPICall
API call example using Retrofit and RxJava2
Stars: ✭ 16 (-23.81%)
Mutual labels:  rxjava2, retrofit2, retrofit2-rxjava
BakingApp
Udacity Android Developer Nanodegree, project 2.
Stars: ✭ 54 (+157.14%)
Mutual labels:  rxjava2, retrofit2, retrofit2-rxjava
Mvvmsmart
基于谷歌最新AAC架构,MVVM设计模式的一套快速开发库,整合ViewModel+Lifecycles+Navigation+DataBinding+LiveData+Okhttp+Retrofit+RxJava+Glide等主流模块,满足日常开发需求。使用该框架可以快速开发高质量、易维护的Android应用。 项目组会持续维护,请放心使用.欢迎Start并Fork交流.
Stars: ✭ 382 (+1719.05%)
Mutual labels:  rxjava2, retrofit2, databinding
Mvvmarms
Android MVVM Architecture Components based on MVPArms and Android Architecture Components.
Stars: ✭ 425 (+1923.81%)
Mutual labels:  rxjava2, retrofit2, databinding
stockwatcher
stockwatcher, a modern android development stack showcase
Stars: ✭ 62 (+195.24%)
Mutual labels:  rxjava2, retrofit2, databinding
Android-Code-Demos
📦 Android learning code demos.
Stars: ✭ 41 (+95.24%)
Mutual labels:  rxjava2, retrofit2, databinding
Sunset-hadith
Islamic app written with Kotlin, using KTOR + coroutines + flow + MVVM + Android Jetpack + Navigation component. Old version using RxJava + Retrofit + OKHttp
Stars: ✭ 26 (+23.81%)
Mutual labels:  rxjava2, retrofit2, databinding
MVVM-Demo
This demo for MVVM Design pattern for android
Stars: ✭ 20 (-4.76%)
Mutual labels:  rxjava2, retrofit2, databinding
eyepetizer kotlin
一款仿开眼短视频App,分别采用MVP、MVVM两种模式实现。一、组件化 + Kotlin + MVP + RxJava + Retrofit + OkHttp 二、组件化 + Kotlin + MVVM + LiveData + DataBinding + Coroutines + RxJava + Retrofit + OkHttp
Stars: ✭ 83 (+295.24%)
Mutual labels:  rxjava2, retrofit2, databinding
rxandroid2-retrofit2
Small tutorial to get started with RxAndroid 2 and Retrofit 2
Stars: ✭ 55 (+161.9%)
Mutual labels:  rxjava2, retrofit2, retrofit2-rxjava
DaggerExoPlayer
This repository demonstrates ExoPlayer injection with Dagger2
Stars: ✭ 58 (+176.19%)
Mutual labels:  rxjava2, retrofit2
Cucumber
A recipe finding app written in Kotlin with MVP architecture
Stars: ✭ 64 (+204.76%)
Mutual labels:  rxjava2, retrofit2
PlayAndroid
✌️✊👋玩安卓Mvvm组件化客户端,整合Jetpack组件DataBinding、ViewModel以及LiveData;屏幕适配✔️状态栏沉浸式✔️黑夜模式✔️,无数据、加载失败状态页;骨架屏、Koin依赖注入等
Stars: ✭ 193 (+819.05%)
Mutual labels:  rxjava2, databinding
PopMovies
Aplicativo em Android para organização dos seus filmes favoritos.
Stars: ✭ 41 (+95.24%)
Mutual labels:  rxjava2, retrofit2
flickr-android
A small sample app to showcase architecting app using Clean Architecture and MVVM
Stars: ✭ 25 (+19.05%)
Mutual labels:  rxjava2, retrofit2
GithubApp-android-architecture
Let's learn a deep look at the Android architecture
Stars: ✭ 16 (-23.81%)
Mutual labels:  rxjava2, retrofit2
situp android proj
🚀一个基组件化、模块化、MVP + MVVM 计划 App,兼容安卓 10.0 9.0 8.0 等 🔥a app like keep, you can edit your plans here, and you can share your life to others by post, too.🔥
Stars: ✭ 15 (-28.57%)
Mutual labels:  rxjava2, retrofit2

RxFamilyUser

注:本项目只是供大家学习交流,不做与商用,项目中有些引入的第三方资源如果引起您的不满,请及时给我联系,并在第一时间删除.


服务端传送门:https://github.com/doudouaili/AndroidConcentration
特别鸣谢万里大屌:https://github.com/waddwaw

应用截图:

显示错误

PS:gif效果太差,项目中有apk,可自行安装.

项目库介绍:

  • 仿Ios右滑界面消失-->com.jude:swipebackhelper:3.1.2
  • 下拉刷新-->com.jcodecraeer:xrecyclerview:1.3.2
  • Android5.0控件-->一系列
  • 数据库-->未确定
  • 网络请求 -->retrofit2+rxjava2
  • Android屏幕适配-->com.zhy:autolayout:1.4.5
  • 注册短信-->share短信服务
  • Utils工具类-->com.blankj:utilcode:1.3.6
  • 加载图片-->com.github.bumptech.glide:glide:3.7.0

项目架构:

框架:基于retrofit2+rxjava2+databing
使用databing把赋值操作交给xml处理,activity不处理网络请求,只负责发出.ViewModel处理发出请求和接受.Control网络请求的控制者.
View:

//Activity/fragment是view层,调用viewModel中业务方法,这里发起一个网络请求.
//viewmodel通过泛型的形式在BaseActivity获取
 mModel.getTitle();
 
 //Acitvity例子
 public class InforActivity extends BaseActivity<ActivityInforBinding, InforModel> implements View.OnClickListener {

    private static final int SANIMATION_TIME = 500;//隐藏/显示动画时间
    private int mPage = 1;
    private String mInforHtml = "";
    private int mInforId = 0;
    private String mTitle;

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

    @Override
    public void initView() {

        mInforId = getIntent().getIntExtra("infor_id", 0);
        mInforHtml = getIntent().getStringExtra("infor_html");
        mTitle = getIntent().getStringExtra("title");
        mBinder.setModel(mModel);

        //设置ToolBar
        mBinder.toolbar.setTitle(mTitle);
        setSupportActionBar(mBinder.toolbar);//替换系统的actionBar
        mBinder.toolbar.setOnMenuItemClickListener(onMenuItemClick);

        WebSettings webSettings = mBinder.webview.getSettings();
        webSettings.setJavaScriptEnabled(true);
        mBinder.webview.loadUrl(mInforHtml);

        setListener();
        setRecyclerViewInit();
    }
}

ViewModel:

    //viewModel调用Control调用Control中网络请求,并回调到ViewModel中做请求结束的操作.
    //Control通过泛型的形式在BaseViewModel中获取
     public void getTitle() {
            Map<String, Integer> map = new HashMap<>();
            mControl.getTitile(this, map, 1);
        }
    //==============================================================
    //ViewModel例子:
    public class DryCargoModel extends BaseModel<FragmentDryCargoBinding, DryCargoControlImpl> {
  
  //网络回调
    @Override
    public void onBeforeRequest(int tag) {

    }

    @Override
    public void onSuccess(Object bean, int tag) {
        TitleBean titleBean = (TitleBean) bean;
        ArrayList<Fragment> fragments = addListFragment(titleBean.getData().size());
        setTabAdapter(fragments, titleBean.getData());
    }

    @Override
    public void onError(String errorMsg) {
        //网络连接失败,从本地读取
       /* String json = "";
        TitleBean titleBean = new Gson().fromJson(json, TitleBean.class);
        ArrayList<Fragment> fragments = addListFragment(titleBean.getData().size());
        setTabAdapter(fragments, titleBean.getData());*/
    }
    

Control:

//调用网络请求,在这里做缓存,取消请求等等.
public class DryCargoControlImpl extends BaseNetControl implements IDryCargoControl {

    @Override
    public void getTitile(final RequestCallBack callBack, Map<String, Integer> map, final int tag) {
        callBack.beforeRequest(tag);
        HttpRequestImpl.getInstance()
                .getTitle(map)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<TitleBean>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        mDisposable = d;
                        TitleBean titleBean = (TitleBean) ACcheManager.getObjectBean(BaseApplication.getContext(), ConstantUtil.STITLE_KEY);
                        //判断缓存,存在就取消请求
                        if (titleBean != null) {
                            onNext(titleBean);
                            mDisposable.dispose();
                        }
                    }

                    @Override
                    public void onNext(TitleBean value) {
                        ACcheManager.putObjectBean(BaseApplication.getContext(), ConstantUtil.STITLE_KEY, value, ACache.TIME_DAY);
                        callBack.success(value, tag);
                    }

                    @Override
                    public void onError(Throwable e) {
                        callBack.error(e.toString());
                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].