Skip to content

Commit 21cbf5e

Browse files
committed
1、使用RxJava 2.x版重构项目
2、新增Retrofit的简要封装、错误代码、快速观察者、带loading效果快速观察者 3、使用RxLifeCycle2.x进行网络请求生命周期绑定去掉自己实现模式 4、新增Retrofit调用相关demo示例 5、升级部分第三方库版本 6、分包及类命名方式稍微调整 7、代码及资源增加注释
1 parent fac0f41 commit 21cbf5e

File tree

112 files changed

+2668
-748
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

112 files changed

+2668
-748
lines changed

README.md

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
--------------------------
33
## 简介:
44

5-
一个Android项目级快速开发框架,节约大部分写常用功能时间以实现更多项目业务功能及体验上的优化.[RapidLib](https://github.com/MarnoDev/RapidLib)基础上加以大的修改与扩展.有问题欢迎issue。
5+
一个Android项目级快速开发框架,节约大部分写常用功能时间以实现更多项目业务功能及体验上的优化.有问题欢迎issue。
66

77
[[Sample PC Download]](https://github.com/AriesHoo/FastLib/blob/master/apk/sample.apk)
88

@@ -23,11 +23,18 @@ allprojects {
2323

2424
```
2525
dependencies {
26-
    //compile 'com.github.AriesHoo:FastLib:1.0.3'
26+
    //compile 'com.github.AriesHoo:FastLib:2.0.0'
2727
compile 'com.github.AriesHoo:FastLib:${LATEST_VERSION}'
2828
}
2929
```
3030

31+
**compile集成**
32+
33+
```
34+
compile project(':fastLib')
35+
36+
```
37+
3138
**包含第三方库**
3239

3340
```
@@ -42,35 +49,40 @@ dependencies {
4249
compile 'com.orhanobut:logger:2.1.1'
4350
//注解
4451
compile 'com.jakewharton:butterknife:8.8.1'
45-
//retrofit+rxjava
46-
compile 'io.reactivex:rxjava:1.1.6'
47-
compile 'io.reactivex:rxandroid:1.2.1'
48-
compile 'com.squareup.retrofit2:retrofit:2.1.0'
49-
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
50-
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
52+
//retrofit+rxjava 网络请求及数据解析相关
53+
compile "io.reactivex.rxjava2:rxjava:2.1.3"
54+
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
55+
compile 'com.squareup.retrofit2:retrofit:2.3.0'
56+
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
57+
compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
58+
compile 'com.squareup.okhttp3:logging-interceptor:3.8.0'
5159
compile 'com.google.code.gson:gson:2.8.1'
60+
61+
//处理rxjava内存泄漏-生命周期绑定
62+
compile 'com.trello.rxlifecycle2:rxlifecycle-components:2.1.0'
5263
//万能适配器
53-
compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.27'
64+
compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.28'
5465
//滑动返回Activity
5566
compile 'cn.bingoogolapple:bga-swipebacklayout:1.1.0@aar'
5667
//快速Tab库
5768
compile 'com.flyco.tablayout:FlycoTabLayout_Lib:2.1.2@aar'
5869
//多状态视图切换
5970
compile 'com.github.MarnonDev:EasyStatusView:v1.0.3'
6071
//常用UI控件(TitleBarView、RadiusView等)
61-
compile 'com.github.AriesHoo:UIWidget:1.8.0'
72+
compile 'com.github.AriesHoo:UIWidget:v1.9.5'
6273
//下拉刷新库
63-
compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.3'
74+
compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.2'
6475
//页面事件交互
6576
compile 'org.simple:androideventbus:1.0.5.1'
6677
//webView库
67-
compile 'com.just.agentweb:agentweb:1.2.6'
78+
compile 'com.just.agentweb:agentweb:2.0.0'
6879
}
6980
```
7081

7182
## 实现功能
7283

73-
* [RxActivity](https://github.com/AriesHoo/FastLib/blob/master/library/src/main/java/com/aries/library/fast/basis/RxActivity.java)[RxFragment](https://github.com/AriesHoo/FastLib/blob/master/library/src/main/java/com/aries/library/fast/basis/RxFragment.java)分别为FastLib所有Activity/Fragment基类:Retrofit请求与Activity、Fragment生命周期绑定,需要手动调用bindLifeCycle()方法
84+
* 网络请求与Activity/Fragment生命周期绑定--通过RxLifeCycle2.x
85+
* Retrofit2.x 网络请求简单封装
7486
* Basis开头是通用基类:[BasisActivity](https://github.com/AriesHoo/FastLib/blob/master/library/src/main/java/com/aries/library/fast/basis/BasisActivity.java)[BasisFragment](https://github.com/AriesHoo/FastLib/blob/master/library/src/main/java/com/aries/library/fast/basis/BasisFragment.java)
7587
* Fast开头的是快速创建常见功能页面:[FastMainActivity](https://github.com/AriesHoo/FastLib/blob/master/library/src/main/java/com/aries/library/fast/module/activity/FastMainActivity.java)-快速创建包含tab主Activity;[FastTitleActivity](https://github.com/AriesHoo/FastLib/blob/master/library/src/main/java/com/aries/library/fast/module/activity/FastTitleActivity.java)-快速创建包含TitleBarView的Activity;[FastRefreshLoadActivity](https://github.com/AriesHoo/FastLib/blob/master/library/src/main/java/com/aries/library/fast/module/activity/FastRefreshLoadActivity.java)-快速创建包含TitleBarView及下拉刷新、多状态切换的Activity;[FastWebActivity](https://github.com/AriesHoo/FastLib/blob/master/library/src/main/java/com/aries/library/fast/module/activity/FastWebActivity.java)快速创建应用内webView的Activity;[FastTitleFragment](https://github.com/AriesHoo/FastLib/blob/master/library/src/main/java/com/aries/library/fast/module/fragment/FastTitleFragment.java)-快速创建包含TitleBarView的Fragment;[FastRefreshLoadFragment](https://github.com/AriesHoo/FastLib/blob/master/library/src/main/java/com/aries/library/fast/module/fragment/FastRefreshLoadFragment.java)-快速实现下拉刷新的Fragment;[FastTitleRefreshLoadFragment](https://github.com/AriesHoo/FastLib/blob/master/library/src/main/java/com/aries/library/fast/module/fragment/FastTitleRefreshLoadFragment.java)-快速实现包含TitleBarView及下拉刷新与多状态切换Fragment
7688
* [FastApplication](https://github.com/AriesHoo/FastLib/blob/master/library/src/main/java/com/aries/library/fast/FastApplication.java):快速配置ToastUtil及滑动关闭Activity的Application可以根据需要继承(需要滑动关闭Activity需要参考初始化)
@@ -80,10 +92,10 @@ dependencies {
8092
* 创建支持手势返回的Activity:继承BasisActivity一行代码实现-参考[SwipeBackActivity](https://github.com/AriesHoo/FastLib/blob/master/app/src/main/java/com/aries/library/fast/demo/module/sample/SwipeBackActivity.java)
8193
* 沉浸式状态栏:继承FastTitleActivity/FastRefreshLoadActivity/FastWebActivity/FastTitleFragment/FastTitleRefreshLoadFragment 无需额外代码即可实现
8294
* 状态栏白底黑字模式:同沉浸式状态栏功能继承,只需重写父类实现接口isLightStatusBarEnable即可实现;MIUI V6、Flyme 4.0、Android 6.0以上:参考[UIWidget-StatusBarUtil](https://github.com/AriesHoo/UIWidget/blob/master/library/src/main/java/com/aries/ui/util/StatusBarUtil.java)
83-
* 快速创建圆角、全圆、按下、不可点击状态的EditText、FrameLayout、LinearLayout、RelativeLayout、TextView减少shape文件创建设置:参考库[UIWidget](https://github.com/AriesHoo/UIWidget)或简化版库[RadiusView](https://github.com/AriesHoo/RadiusView)
95+
* 快速创建圆角、全圆、按下、不可点击状态的TextView、EditText、FrameLayout、LinearLayout、RelativeLayout、TextView、RadioButton、CheckBox减少shape文件创建设置:参考库[UIWidget](https://github.com/AriesHoo/UIWidget)
8496
* Activity/Fragment 页面事件交互(支持设置TAG)
8597
* 万能适配器(ListView、GridView,RecyclerView):可添加多个Header和Footer
86-
* Fragment懒加载,Activity可见时加载
98+
* Fragment懒加载,Activity可见时加载--统一了普通Fragment及与ViewPager配合滑动的用户可见回调
8799
* 下拉刷新、上拉加载:支持多种效果的刷新头及自定义刷新头-参考库[SmartRefreshLayout](https://github.com/scwang90/SmartRefreshLayout)
88100

89101
## 注意事项
@@ -94,6 +106,7 @@ dependencies {
94106

95107
## 鸣谢
96108

109+
* [RapidLib-来自改库的扩展](https://github.com/MarnoDev/RapidLib)
97110
* [ButterKnife-注解](https://github.com/JakeWharton/butterknife)
98111
* [Glide-图片加载](https://github.com/bumptech/glide)
99112
* [Logger-日志打印](https://github.com/orhanobut/logger)

apk/sample.apk

391 KB
Binary file not shown.

app/build.gradle

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ android {
1010
applicationId "com.aries.library.fast.demo"
1111
minSdkVersion ext.minSdkVersion
1212
targetSdkVersion ext.targetSdkVersion
13-
versionCode 3
14-
versionName "1.0.3"
13+
versionCode 200
14+
versionName "2.0.0"
1515
multiDexEnabled true
1616
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
17+
buildConfigField "String", "BASE_URL", "\"https://api.douban.com/\""
1718
}
1819
signingConfigs {
1920
release {
@@ -25,6 +26,7 @@ android {
2526
}
2627
buildTypes {
2728
debug {
29+
//是否debug模式用于控制是否打印log等
2830
debuggable true
2931
minifyEnabled false
3032
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
@@ -49,7 +51,8 @@ dependencies {
4951
compile project(':library')
5052
apt 'com.jakewharton:butterknife-compiler:8.8.1'
5153
compile 'cn.bingoogolapple:bga-banner:2.1.7@aar'
52-
compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.3'
54+
compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.2'
5355
//设置界面Item库
54-
compile 'com.github.lygttpod:SuperTextView:2.1.0'
56+
compile 'com.github.lygttpod:SuperTextView:2.1.3'
57+
compile 'com.flyco.labelview:FlycoLabelView_Lib:1.0.2@aar'
5558
}

app/src/main/AndroidManifest.xml

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,26 @@
66
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
77
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
88
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
9+
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
10+
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
11+
<!--AgentWeb 是默认启动定位-->
912
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
1013
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
1114

1215
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
1316
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
17+
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
1418

1519
<application
1620
android:name=".App"
1721
android:allowBackup="true"
1822
android:icon="@drawable/ic_launcher"
1923
android:label="@string/app_name"
20-
android:supportsRtl="true"
2124
android:persistent="true"
25+
android:supportsRtl="true"
2226
android:theme="@style/AppTheme">
2327
<activity
24-
android:name=".module.main.SplashActivity"
28+
android:name=".module.SplashActivity"
2529
android:theme="@style/AppTheme.NotTranslucent">
2630
<intent-filter>
2731
<action android:name="android.intent.action.MAIN"/>
@@ -32,11 +36,23 @@
3236
<activity
3337
android:name=".module.main.MainActivity"
3438
android:theme="@style/AppTheme.NotTranslucent"/>
35-
<activity android:name=".module.main.WebViewActivity"/>
36-
<activity android:name=".module.sample.SwipeBackActivity"/>
37-
<activity android:name=".module.sample.ali.ALiPayMainActivity"/>
38-
<activity android:name=".module.sample.news.NewsMainActivity"/>
39-
<activity android:name=".module.main.ThirdLibraryActivity"/>
39+
<!--应用内浏览器-->
40+
<activity
41+
android:name=".module.WebViewActivity"
42+
android:configChanges="orientation|screenSize"
43+
android:hardwareAccelerated="true"/>
44+
<!--滑动返回Activity-微信效果-->
45+
<activity android:name=".module.main.sample.SwipeBackActivity"/>
46+
<!--QQ默认主题TitleBar样式-->
47+
<activity android:name=".module.main.sample.QQTitleActivity"/>
48+
<!--支付宝主界面效果-->
49+
<activity android:name=".module.main.sample.ali.ALiPayMainActivity"/>
50+
<!--腾讯新闻主界面效果-->
51+
<activity android:name=".module.main.sample.news.NewsMainActivity"/>
52+
<!--设置页-->
53+
<activity android:name=".module.mine.SettingActivity"/>
54+
<!--第三方库-->
55+
<activity android:name=".module.mine.ThirdLibraryActivity"/>
4056
</application>
4157

4258
</manifest>

app/src/main/java/com/aries/library/fast/demo/App.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,16 @@
44

55
import com.aries.library.fast.FastApplication;
66
import com.aries.library.fast.manager.LoggerManager;
7+
import com.aries.library.fast.retrofit.FastRetrofit;
78
import com.aries.library.fast.util.ToastUtil;
89

10+
import java.util.HashMap;
11+
import java.util.Map;
12+
913

1014
/**
1115
* Created: AriesHoo on 2017/7/20 14:11
12-
* Function:
16+
* Function: 基础配置Application
1317
* Desc:
1418
*/
1519
public class App extends FastApplication {
@@ -20,7 +24,18 @@ public class App extends FastApplication {
2024
public void onCreate() {
2125
super.onCreate();
2226
mContext = getApplicationContext();
27+
//测试关键header
28+
Map<String, Object> header = new HashMap<>();
29+
header.put("head", "head");
30+
header.put("time", System.currentTimeMillis());
2331
LoggerManager.init(TAG, BuildConfig.DEBUG);
24-
ToastUtil.init(mContext,true);
32+
ToastUtil.init(mContext, true);
33+
FastRetrofit.getInstance()
34+
.setBaseUrl(BuildConfig.BASE_URL)
35+
.trustAllSSL()//信任所有证书--也可设置useSingleSignedSSL(单向认证)或useBothSignedSSL(双向验证)
36+
.setHeaders(header)//设置统一请求头
37+
.setLogEnable(BuildConfig.DEBUG)//设置请求全局log-可设置tag及Level类型
38+
// .setLogEnable(BuildConfig.DEBUG, TAG, HttpLoggingInterceptor.Level.BASIC)
39+
.setTimeout(20);//设置统一超时--也可单独调用read/write/connect超时(可以设置时间单位TimeUnit)
2540
}
2641
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.aries.library.fast.demo.adapter;
2+
3+
import android.view.View;
4+
5+
import com.aries.library.fast.demo.R;
6+
import com.aries.library.fast.demo.entity.SubjectsEntity;
7+
import com.aries.library.fast.manager.GlideManager;
8+
import com.chad.library.adapter.base.BaseQuickAdapter;
9+
import com.chad.library.adapter.base.BaseViewHolder;
10+
import com.flyco.labelview.LabelView;
11+
12+
/**
13+
* Created: AriesHoo on 2017/8/23 17:01
14+
* Function: 豆瓣电影适配器
15+
* Desc:
16+
*/
17+
public class SubjectMovieAdapter extends BaseQuickAdapter<SubjectsEntity, BaseViewHolder> {
18+
19+
boolean isShowTop = false;
20+
21+
public SubjectMovieAdapter(boolean isShowTop) {
22+
super(R.layout.item_subject_movie);
23+
this.isShowTop = isShowTop;
24+
}
25+
26+
@Override
27+
protected void convert(BaseViewHolder helper, SubjectsEntity item) {
28+
helper.setText(R.id.tv_titleMovie, item.title)
29+
.setText(R.id.tv_typeMovie, "题材:" + item.getGenres())
30+
.setText(R.id.tv_yearMovie, "年份:" + item.year)
31+
.setText(R.id.tv_directorMovie, "导演:" + item.getDirectors())
32+
.setText(R.id.tv_castMovie, "主演:" + item.getCasts());
33+
GlideManager.loadImg(item.images.large, helper.getView(R.id.iv_coverMovie));
34+
LabelView labelView = helper.getView(R.id.lv_topMovie);
35+
labelView.setText("Top" + (helper.getLayoutPosition() + 1));
36+
labelView.setVisibility(isShowTop ? View.VISIBLE : View.GONE);
37+
}
38+
}

app/src/main/java/com/aries/library/fast/demo/adapter/WidgetAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
/**
1111
* Created: AriesHoo on 2017/7/14 9:55
12-
* Function:
12+
* Function: 描述性条目适配器
1313
* Desc:
1414
*/
1515
public class WidgetAdapter extends BaseQuickAdapter<WidgetEntity, BaseViewHolder> {

0 commit comments

Comments
 (0)