Skip to content

Commit b0e3df5

Browse files
committed
1、修改FastMultiUrl类支持链式调用
2、修改Demo演示效果
1 parent 1a99f3e commit b0e3df5

File tree

16 files changed

+159
-184
lines changed

16 files changed

+159
-184
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ allprojects {
4949

5050
```
5151
dependencies {
52-
    //compile 'com.github.AriesHoo:FastLib:2.1.5'
52+
    //compile 'com.github.AriesHoo:FastLib:2.2.0'
5353
compile 'com.github.AriesHoo:FastLib:${LATEST_VERSION}'
5454
}
5555
```

apk/sample.apk

-2.44 KB
Binary file not shown.

app/build.gradle

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ android {
1414
applicationId "com.aries.library.fast.demo"
1515
minSdkVersion ext.minSdkVersion
1616
targetSdkVersion ext.targetSdkVersion
17-
versionCode 219
18-
versionName "2.1.9-delta"
17+
versionCode 220
18+
versionName "2.2.0"
1919
multiDexEnabled true
2020
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
2121
buildConfigField "String", "BASE_URL", "\"https://api.douban.com/\""
@@ -66,9 +66,10 @@ dependencies {
6666
compile fileTree(include: ['*.jar'], dir: 'libs')
6767
compile project(':library')
6868
//compile 'com.github.AriesHoo:FastLib:+'
69-
//compile 'com.github.AriesHoo:FastLib:2.1.5'
69+
//compile 'com.github.AriesHoo:FastLib:2.2.0'
7070
apt 'com.jakewharton:butterknife-compiler:8.8.1'
7171
compile 'cn.bingoogolapple:bga-banner:2.1.7@aar'
72+
7273
compile 'com.scwang.smartrefresh:SmartRefreshHeader:1.0.3'
7374
//设置界面Item库
7475
compile 'com.github.lygttpod:SuperTextView:2.1.5'
@@ -83,8 +84,8 @@ dependencies {
8384
//webView库 继承FastWebActivity需要,不需要内置WebView可以不compile
8485
compile 'com.just.agentweb:agentweb:2.0.1'
8586
//常用UI控件(TitleBarView、RadiusView、UIAlertView、UIActionSheetView、UIProgressView等),快速标题栏fast_layout_title_bar,继承FastTitleXXX类需要
86-
compile 'com.github.AriesHoo:UIWidget:2.0.5'
87-
//下拉刷新库注意刷新头SmartRefreshHeader版本要对应
87+
compile 'com.github.AriesHoo:UIWidget:2.0.6'
88+
//下拉刷新库注意刷新头SmartRefreshHeader版本最好对应尤其头版本不要低于SmartRefreshLayout版本
8889
compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.3'
8990
//图片加载
9091
compile 'com.github.bumptech.glide:glide:4.0.0'

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.aries.library.fast.i.LoadingDialog;
2020
import com.aries.library.fast.i.MultiStatusView;
2121
import com.aries.library.fast.manager.LoggerManager;
22+
import com.aries.library.fast.retrofit.FastMultiUrl;
2223
import com.aries.library.fast.retrofit.FastRetrofit;
2324
import com.aries.library.fast.util.SizeUtil;
2425
import com.aries.library.fast.util.ToastUtil;
@@ -66,11 +67,13 @@ public void onCreate() {
6667

6768
//以下为配置多BaseUrl
6869
//step1
69-
//FastMultiUrl.getInstance().putBaseUrl("test", "http://www.baidu.com");
70+
FastMultiUrl.getInstance().putBaseUrl("taobao", "http://www.taobao.com")
71+
.putBaseUrl("baidu", "http://www.baidu.com");
7072
//step2
7173
// 需要step1中baseUrl的方法需要在对应service里增加
72-
// @Headers({FastMultiUrl.BASE_URL_NAME_HEADER + "test"})
73-
//增加一个Header配置注意FastMultiUrl.BASE_URL_NAME_HEADER是必须后面"test"作为标记
74+
// @Headers({FastMultiUrl.BASE_URL_NAME_HEADER + "taobao"})
75+
//增加一个Header配置注意FastMultiUrl.BASE_URL_NAME_HEADER是必须后面"taobao"作为标记
76+
// 参考com.aries.library.fast.demo.retrofit.service.ApiService
7477
// FastMultiUrl里增加的拦截器才找得到对应的BaseUrl
7578

7679
//主页返回键是否退回桌面(程序后台)

app/src/main/java/com/aries/library/fast/demo/constant/ApiConstant.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
public class ApiConstant {
1010

11-
public static final String API_MOVIE_IN_THEATERS = "/v2/movie/in_theaters";
12-
public static final String API_MOVIE_COMING_SOON = "/v2/movie/coming_soon";
13-
public static final String API_MOVIE_TOP = "/v2/movie/top250";
11+
public static final String API_MOVIE_IN_THEATERS = "v2/movie/in_theaters";
12+
public static final String API_MOVIE_COMING_SOON = "v2/movie/coming_soon";
13+
public static final String API_MOVIE_TOP = "v2/movie/top250";
1414
}

app/src/main/java/com/aries/library/fast/demo/constant/MovieConstant.java

Lines changed: 0 additions & 14 deletions
This file was deleted.
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
package com.aries.library.fast.demo.helper;
2+
3+
import android.content.Context;
4+
import android.content.res.ColorStateList;
5+
import android.graphics.Color;
6+
import android.support.design.widget.FloatingActionButton;
7+
import android.support.v7.widget.LinearLayoutManager;
8+
import android.support.v7.widget.RecyclerView;
9+
import android.view.View;
10+
import android.widget.RelativeLayout;
11+
12+
import com.aries.library.fast.demo.R;
13+
import com.aries.library.fast.util.FastUtil;
14+
import com.aries.library.fast.util.SizeUtil;
15+
import com.marno.easystatelibrary.EasyStatusView;
16+
17+
/**
18+
* Created: AriesHoo on 2017/11/20 14:37
19+
* E-Mail: AriesHoo@126.com
20+
* Function: 回到顶部帮助类
21+
* Description:
22+
*/
23+
public class BackToTopHelper {
24+
private FloatingActionButton mFloatingActionButton;
25+
private RecyclerView mRecyclerView;
26+
private EasyStatusView mEasyStatusView;
27+
private Context mContext;
28+
29+
public void init(RecyclerView recyclerView, EasyStatusView easyStatusView) {
30+
this.mRecyclerView = recyclerView;
31+
this.mEasyStatusView = easyStatusView;
32+
this.mContext = recyclerView.getContext();
33+
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
34+
@Override
35+
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
36+
super.onScrolled(recyclerView, dx, dy);
37+
RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
38+
if (layoutManager instanceof LinearLayoutManager) {
39+
LinearLayoutManager linearManager = (LinearLayoutManager) layoutManager;
40+
int firstVisibleItemPosition = linearManager.findFirstVisibleItemPosition();
41+
if (firstVisibleItemPosition > 10) {
42+
setBackToTop(true);
43+
} else {
44+
setBackToTop(false);
45+
}
46+
}
47+
}
48+
});
49+
}
50+
51+
/**
52+
* 控制回到顶部
53+
*
54+
* @param enable
55+
*/
56+
private void setBackToTop(boolean enable) {
57+
if (mFloatingActionButton == null) {
58+
mFloatingActionButton = new FloatingActionButton(mContext);
59+
mFloatingActionButton.setBackgroundTintList(ColorStateList.valueOf(Color.WHITE));
60+
mFloatingActionButton.setCompatElevation(10);
61+
mFloatingActionButton.setUseCompatPadding(true);
62+
mFloatingActionButton.setImageDrawable(
63+
FastUtil.getTintDrawable(mContext.getResources().getDrawable(R.drawable.ic_top),
64+
mContext.getResources().getColor(R.color.colorTitleText)));
65+
mFloatingActionButton.setRippleColor(mContext.getResources().getColor(R.color.colorWhitePressed));
66+
mEasyStatusView.addView(mFloatingActionButton);
67+
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) mFloatingActionButton.getLayoutParams();
68+
lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);//与父容器的左侧对齐
69+
lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);//与父容器的上侧对齐
70+
lp.rightMargin = SizeUtil.dp2px(6);
71+
lp.bottomMargin = SizeUtil.dp2px(6);
72+
mFloatingActionButton.setOnClickListener(new View.OnClickListener() {
73+
@Override
74+
public void onClick(View v) {
75+
mRecyclerView.smoothScrollToPosition(0);
76+
}
77+
});
78+
}
79+
mFloatingActionButton.setVisibility(enable ? View.VISIBLE : View.GONE);
80+
}
81+
}

app/src/main/java/com/aries/library/fast/demo/module/activity/ActivityFragment.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
import android.widget.LinearLayout;
99

1010
import com.aries.library.fast.demo.R;
11+
import com.aries.library.fast.demo.constant.ApiConstant;
1112
import com.aries.library.fast.demo.constant.EventConstant;
12-
import com.aries.library.fast.demo.constant.MovieConstant;
1313
import com.aries.library.fast.demo.constant.SPConstant;
1414
import com.aries.library.fast.manager.LoggerManager;
1515
import com.aries.library.fast.manager.TabLayoutManager;
@@ -109,9 +109,10 @@ private void setTab() {
109109
isSliding = (boolean) SPUtil.get(mContext, SPConstant.SP_KEY_ACTIVITY_TAB_SLIDING, isSliding);
110110
vpContent.removeAllViews();
111111
listFragment.clear();
112-
listFragment.add(MovieBaseFragment.newInstance(MovieConstant.MOVIE_IN_THEATERS));
113-
listFragment.add(MovieBaseFragment.newInstance(MovieConstant.MOVIE_COMING_SOON));
114-
listFragment.add(MovieBaseFragment.newInstance(MovieConstant.MOVIE_TOP));
112+
113+
listFragment.add(MovieBaseFragment.newInstance(ApiConstant.API_MOVIE_IN_THEATERS));
114+
listFragment.add(MovieBaseFragment.newInstance(ApiConstant.API_MOVIE_COMING_SOON));
115+
listFragment.add(MovieBaseFragment.newInstance(ApiConstant.API_MOVIE_TOP));
115116
if (isSliding) {
116117
TabLayoutManager.getInstance().setSlidingTabData(this, mSlidingTab, vpContent,
117118
getTitles(R.array.arrays_tab_activity), listFragment);

app/src/main/java/com/aries/library/fast/demo/module/activity/MovieBaseFragment.java

Lines changed: 9 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,24 @@
11
package com.aries.library.fast.demo.module.activity;
22

33
import android.os.Bundle;
4-
import android.support.v7.widget.LinearLayoutManager;
5-
import android.support.v7.widget.RecyclerView;
64
import android.view.View;
7-
import android.widget.ImageView;
8-
import android.widget.RelativeLayout;
95

106
import com.aries.library.fast.demo.R;
117
import com.aries.library.fast.demo.adapter.SubjectMovieAdapter;
128
import com.aries.library.fast.demo.base.BaseMovieEntity;
9+
import com.aries.library.fast.demo.constant.ApiConstant;
1310
import com.aries.library.fast.demo.constant.EventConstant;
1411
import com.aries.library.fast.demo.constant.GlobalConstant;
15-
import com.aries.library.fast.demo.constant.MovieConstant;
1612
import com.aries.library.fast.demo.constant.SPConstant;
1713
import com.aries.library.fast.demo.entity.SubjectsEntity;
14+
import com.aries.library.fast.demo.helper.BackToTopHelper;
1815
import com.aries.library.fast.demo.module.WebViewActivity;
1916
import com.aries.library.fast.demo.retrofit.repository.ApiRepository;
2017
import com.aries.library.fast.manager.LoggerManager;
2118
import com.aries.library.fast.module.fragment.FastRefreshLoadFragment;
2219
import com.aries.library.fast.retrofit.FastError;
2320
import com.aries.library.fast.retrofit.FastObserver;
2421
import com.aries.library.fast.util.SPUtil;
25-
import com.aries.library.fast.util.SizeUtil;
2622
import com.aries.library.fast.util.ToastUtil;
2723
import com.chad.library.adapter.base.BaseQuickAdapter;
2824
import com.chad.library.adapter.base.BaseViewHolder;
@@ -39,28 +35,27 @@
3935
public class MovieBaseFragment extends FastRefreshLoadFragment<SubjectsEntity> {
4036

4137
private BaseQuickAdapter mAdapter;
42-
private int mType = 0;
43-
private ImageView imageViewTop;
38+
private String mUrl;
4439
private int animationIndex = GlobalConstant.GLOBAL_ADAPTER_ANIMATION_VALUE;
4540
private boolean animationAlways = true;
4641

47-
public static MovieBaseFragment newInstance(int type) {
42+
public static MovieBaseFragment newInstance(String url) {
4843
Bundle args = new Bundle();
4944
MovieBaseFragment fragment = new MovieBaseFragment();
50-
args.putInt("type", type);
45+
args.putString("url", url);
5146
fragment.setArguments(args);
5247
return fragment;
5348
}
5449

5550
@Override
5651
public void beforeSetContentView() {
5752
super.beforeSetContentView();
58-
mType = getArguments().getInt("type");
53+
mUrl = getArguments().getString("url");
5954
}
6055

6156
@Override
6257
public BaseQuickAdapter<SubjectsEntity, BaseViewHolder> getAdapter() {
63-
mAdapter = new SubjectMovieAdapter(mType == MovieConstant.MOVIE_TOP);
58+
mAdapter = new SubjectMovieAdapter(mUrl == ApiConstant.API_MOVIE_TOP);
6459
changeAdapterAnimation(0);
6560
changeAdapterAnimationAlways(true);
6661
return mAdapter;
@@ -73,59 +68,13 @@ public int getContentLayout() {
7368

7469
@Override
7570
public void initView(Bundle savedInstanceState) {
76-
77-
}
78-
79-
/**
80-
* 控制回到顶部
81-
*
82-
* @param enable
83-
*/
84-
private void setBackToTop(boolean enable) {
85-
if (imageViewTop == null) {
86-
imageViewTop = new ImageView(mContext);
87-
imageViewTop.setImageResource(R.drawable.ic_top);
88-
mEasyStatusView.addView(imageViewTop);
89-
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) imageViewTop.getLayoutParams();
90-
lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);//与父容器的左侧对齐
91-
lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);//与父容器的上侧对齐
92-
lp.rightMargin = SizeUtil.dp2px(20);
93-
lp.bottomMargin = SizeUtil.dp2px(20);
94-
imageViewTop.setOnClickListener(new View.OnClickListener() {
95-
@Override
96-
public void onClick(View v) {
97-
mRecyclerView.smoothScrollToPosition(0);
98-
}
99-
});
100-
}
101-
imageViewTop.setVisibility(enable ? View.VISIBLE : View.GONE);
102-
}
103-
104-
@Override
105-
public void loadData() {
106-
super.loadData();
107-
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
108-
@Override
109-
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
110-
super.onScrolled(recyclerView, dx, dy);
111-
RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
112-
if (layoutManager instanceof LinearLayoutManager) {
113-
LinearLayoutManager linearManager = (LinearLayoutManager) layoutManager;
114-
int firstVisibleItemPosition = linearManager.findFirstVisibleItemPosition();
115-
if (firstVisibleItemPosition > 10) {
116-
setBackToTop(true);
117-
} else {
118-
setBackToTop(false);
119-
}
120-
}
121-
}
122-
});
71+
new BackToTopHelper().init(mRecyclerView, mEasyStatusView);
12372
}
12473

12574
@Override
12675
public void loadData(int page) {
12776
DEFAULT_PAGE_SIZE = 15;//接口最大支持单页100
128-
ApiRepository.getInstance().getBaseMovie(mType, page * DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE)
77+
ApiRepository.getInstance().getMovie(mUrl, page * DEFAULT_PAGE_SIZE, DEFAULT_PAGE_SIZE)
12978
.compose(bindUntilEvent(FragmentEvent.DESTROY))
13079
.subscribe(new FastObserver<BaseMovieEntity>(this.getContext(), new Object[]{mEasyStatusView, this}) {
13180
@Override
Lines changed: 4 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.aries.library.fast.demo.retrofit.repository;
22

33
import com.aries.library.fast.demo.base.BaseMovieEntity;
4-
import com.aries.library.fast.demo.constant.MovieConstant;
54
import com.aries.library.fast.demo.retrofit.service.ApiService;
65
import com.aries.library.fast.retrofit.FastRetrofit;
76
import com.aries.library.fast.retrofit.FastTransformer;
@@ -43,53 +42,16 @@ private ApiService getApiService() {
4342
}
4443

4544
/**
46-
* 获取Top250电影
47-
*
45+
* 获取电影列表
46+
* @param url 拼接URL
4847
* @param start
4948
* @param count
5049
* @return
5150
*/
52-
public Observable<BaseMovieEntity> getTopMovie(int start, int count) {
51+
public Observable<BaseMovieEntity> getMovie(String url, int start, int count) {
5352
Map<String, Object> params = new HashMap<>();
5453
params.put("start", start);
5554
params.put("count", count);
56-
return FastTransformer.switchSchedulers(mApiService.getTopMovie(params));
57-
}
58-
59-
/**
60-
* 获取正在热映电影
61-
*
62-
* @param start
63-
* @param count
64-
* @return
65-
*/
66-
public Observable<BaseMovieEntity> getInTheatersMovie(int start, int count) {
67-
Map<String, Object> params = new HashMap<>();
68-
params.put("start", start);
69-
params.put("count", count);
70-
return FastTransformer.switchSchedulers(getApiService().getInTheatersMovie(params));
71-
}
72-
73-
/**
74-
* 获取即将上映电影
75-
*
76-
* @param start
77-
* @param count
78-
* @return
79-
*/
80-
public Observable<BaseMovieEntity> getComingSoonMovie(int start, int count) {
81-
Map<String, Object> params = new HashMap<>();
82-
params.put("start", start);
83-
params.put("count", count);
84-
return FastTransformer.switchSchedulers(getApiService().getComingSoonMovie(params));
85-
}
86-
87-
public Observable<BaseMovieEntity> getBaseMovie(int type, int start, int count) {
88-
if (type == MovieConstant.MOVIE_IN_THEATERS) {
89-
return getInTheatersMovie(start, count);
90-
} else if (type == MovieConstant.MOVIE_COMING_SOON) {
91-
return getComingSoonMovie(start, count);
92-
}
93-
return getTopMovie(start, count);
55+
return FastTransformer.switchSchedulers(getApiService().getMovie(url, params));
9456
}
9557
}

0 commit comments

Comments
 (0)