Skip to content

Commit 4aca37d

Browse files
AriesHooAriesHoo
authored andcommitted
重大变更:重构大部分代码及实现方式删除许多类及实现方法包括三方库慎重升级与之前版本有很大差异
优化:BasisFragment 控制是否为单Fragment 方法 优化:调整ActivityFragmentControl 将状态栏及导航栏控制增加 优化:多状态管理StatusLayoutManager调整完成 优化:滑动返回控制swipeBack功能新增各种回调功能 优化:将原默认配置方法调整到最终实现类功能 新增:增加友盟统计功能演示 新增:新增首页演示其它三方库状态栏及导航栏功能控制 新增:个人MineFragment中选择头像功能三方库状态栏及导航栏控制示例 优化:UI全局控制相关回调并调整三方库Activity控制 优化:新增FastRetrofit 下载/上传功能 优化:新增FastRetrofit 控制多BaseUrl方式 新增:新增Demo检查版本功能试验下载文件功能 删除:删除原多状态布局相关配置 修复:修改FastRefreshActivity 设置Adapter错误BUG 升级:升级部分三方库版本 修复:删除IHttpRequestControl判断避免http错误时无法全局控制BUG 优化:修改解析method方法增加对get方法兼容 优化:修改ToastUtil 增加子线程调用自动切换主线程操作 优化:优化下载功能新增FastDownloadRetrofit并新增格式化文件方法FastFormatUtil#formatDataSize 修复:修复FastRetrofit无法删除单个header问题 优化:优化上传文件并通过新增的FastUploadRequestBody及FastUploadRequestListener实现单个/多个文件 上传进度监听 可参看 MineFragment 示例 优化:FastFileUtil 安装App在Android 7.0以下版本兼容性 新增:新增IMultiStatusView 用于设置StatusLayoutManager 属性 优化:调整setMultiStatusView位置并抽离设置StatusLayoutManager相关属性 优化:注释及代码规范调整 优化:调整列表刷新控制多状态配置及itemClick事件 优化:优化下载功能统一使用全局设置Retrofit 优化:优化LoggerManager可设置自定义属性 优化:优化FastRetrofit日志打印控制--json格式打印 新增:demo新增拖拽调整列表顺序功能 新增:FastFileUtil及fast_file_path以适配更多文件系统及开发者自定义
1 parent 29e2466 commit 4aca37d

File tree

76 files changed

+1076
-703
lines changed

Some content is hidden

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

76 files changed

+1076
-703
lines changed

app/build.gradle

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
11
apply plugin: 'com.android.application'
2-
//apply plugin: 'com.neenbedankt.android-apt'
3-
//apply plugin: 'me.tatarka.retrolambda'
4-
5-
def releaseTime() {
6-
return new Date().format("yyyy-MM-dd_HH-mm", TimeZone.getTimeZone("GMT+8"))
7-
}
82

93
def ext = rootProject.ext
104
android {
@@ -15,7 +9,7 @@ android {
159
targetSdkVersion ext.targetSdkVersion
1610
versionCode ext.versionCode
1711
versionName ext.versionName
18-
// multiDexEnabled true
12+
multiDexEnabled true
1913
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
2014
buildConfigField "String", "BASE_URL", "\"https://api.douban.com/\""
2115
buildConfigField "String", "BASE__UPDATE_URL", "\"https://raw.githubusercontent.com/AriesHoo/FastLib/master/apk/\""

app/src/main/AndroidManifest.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,11 @@
2626
android:label="@string/app_name"
2727
android:supportsRtl="true"
2828
android:theme="@style/AppTheme">
29-
<!-- android:screenOrientation="portrait" -->
3029
<activity
3130
android:name=".module.SplashActivity"
3231
android:configChanges="locale|layoutDirection|mcc|mnc">
3332
<intent-filter>
3433
<action android:name="android.intent.action.MAIN"/>
35-
3634
<category android:name="android.intent.category.LAUNCHER"/>
3735
</intent-filter>
3836
</activity>

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
import com.umeng.analytics.MobclickAgent;
1313

1414
/**
15-
* Created: AriesHoo on 2018/7/2 9:31
16-
* E-Mail: AriesHoo@126.com
15+
* @Author: AriesHoo on 2018/7/31 10:43
16+
* @E-Mail: AriesHoo@126.com
1717
* Function:基础配置Application
1818
* Description:
1919
*/
@@ -73,6 +73,7 @@ public void onCreate() {
7373
//设置统一超时--也可单独调用read/write/connect超时(可以设置时间单位TimeUnit)
7474
//默认20 s
7575
.setTimeout(30);
76+
7677
//注意设置baseUrl要以/ 结尾 service 里的方法不要以/打头不然拦截到的url会有问题
7778
//以下为配置多BaseUrl--默认方式一优先级高 可通过FastRetrofit.getInstance().setHeaderPriorityEnable(true);设置方式二优先级
7879
//方式一 通过Service 里的method-(如:) 设置 推荐 使用该方式不需设置如方式二的额外Header
@@ -81,12 +82,14 @@ public void onCreate() {
8182

8283
//方式二 通过 Service 里添加特定header设置
8384
//step1
84-
// FastRetrofit.getInstance()
85-
// .putHeaderBaseUrl(ApiConstant.API_UPDATE_APP_KEY, BuildConfig.BASE__UPDATE_URL);
85+
FastRetrofit.getInstance()
86+
//设置Header模式优先-默认Method方式优先
87+
.setHeaderPriorityEnable(true)
88+
.putHeaderBaseUrl(ApiConstant.API_UPDATE_APP_KEY, BuildConfig.BASE__UPDATE_URL);
8689
//step2
8790
// 需要step1中baseUrl的方法需要在对应service里增加
8891
// @Headers({FastRetrofit.BASE_URL_NAME_HEADER + ApiConstant.API_UPDATE_APP_KEY})
89-
//增加一个Header配置注意FastRetrofit.BASE_URL_NAME_HEADER是必须为step调用putHeaderBaseUrl方法设置的key
92+
//增加一个Header配置注意FastRetrofit.BASE_URL_NAME_HEADER是必须为step1调用putHeaderBaseUrl方法设置的key
9093
// 参考com.aries.library.fast.demo.retrofit.service.ApiService#updateApp
9194

9295
//初始化友盟统计

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

Lines changed: 16 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import android.graphics.Color;
1010
import android.graphics.drawable.Drawable;
1111
import android.os.Build;
12-
import android.os.Bundle;
1312
import android.support.annotation.NonNull;
1413
import android.support.annotation.Nullable;
1514
import android.support.v4.app.Fragment;
@@ -34,6 +33,7 @@
3433
import com.aries.library.fast.i.QuitAppControl;
3534
import com.aries.library.fast.i.SwipeBackControl;
3635
import com.aries.library.fast.i.TitleBarViewControl;
36+
import com.aries.library.fast.impl.FastActivityLifecycleCallbacks;
3737
import com.aries.library.fast.manager.LoggerManager;
3838
import com.aries.library.fast.util.FastStackUtil;
3939
import com.aries.library.fast.util.FastUtil;
@@ -76,8 +76,8 @@
7676
import retrofit2.HttpException;
7777

7878
/**
79-
* Created: AriesHoo on 2017/11/30 11:43
80-
* E-Mail: AriesHoo@126.com
79+
* @Author: AriesHoo on 2018/7/30 11:34
80+
* @E-Mail: AriesHoo@126.com
8181
* Function: 应用全局配置管理实现
8282
* Description:
8383
* 1、新增友盟统计功能对接
@@ -275,7 +275,12 @@ public void setRequestedOrientation(Activity activity) {
275275
//全局控制屏幕横竖屏
276276
//先判断xml没有设置屏幕模式避免将开发者本身想设置的覆盖掉
277277
if (activity.getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) {
278-
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
278+
try {
279+
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
280+
} catch (Exception e) {
281+
e.printStackTrace();
282+
LoggerManager.e(TAG, "setRequestedOrientation:" + e.getMessage());
283+
}
279284
}
280285
}
281286

@@ -324,16 +329,7 @@ public boolean setNavigationBar(Activity activity, NavigationViewHelper helper,
324329
*/
325330
@Override
326331
public Application.ActivityLifecycleCallbacks getActivityLifecycleCallbacks() {
327-
return new Application.ActivityLifecycleCallbacks() {
328-
@Override
329-
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
330-
331-
}
332-
333-
@Override
334-
public void onActivityStarted(Activity activity) {
335-
}
336-
332+
return new FastActivityLifecycleCallbacks() {
337333
@Override
338334
public void onActivityResumed(Activity activity) {
339335
if (activity instanceof FragmentActivity) {
@@ -369,19 +365,11 @@ public void onActivityPaused(Activity activity) {
369365

370366
@Override
371367
public void onActivityStopped(Activity activity) {
368+
//统一于滑动返回动画
372369
if (activity.isFinishing()) {
373370
activity.overridePendingTransition(0, R.anim.bga_sbl_activity_swipeback_exit);
374371
}
375372
}
376-
377-
@Override
378-
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
379-
380-
}
381-
382-
@Override
383-
public void onActivityDestroyed(Activity activity) {
384-
}
385373
};
386374
}
387375

@@ -410,8 +398,10 @@ public void onFragmentPaused(FragmentManager fm, Fragment f) {
410398
}
411399

412400
@Override
413-
public void httpRequestSuccess(IHttpRequestControl httpRequestControl, List<? extends Object> list, OnHttpRequestListener listener) {
414-
if (httpRequestControl == null) return;
401+
public void httpRequestSuccess(IHttpRequestControl httpRequestControl, List<?> list, OnHttpRequestListener listener) {
402+
if (httpRequestControl == null) {
403+
return;
404+
}
415405
SmartRefreshLayout smartRefreshLayout = httpRequestControl.getRefreshLayout();
416406
BaseQuickAdapter adapter = httpRequestControl.getRecyclerAdapter();
417407
StatusLayoutManager statusLayoutManager = httpRequestControl.getStatusLayoutManager();
@@ -534,7 +524,7 @@ public void httpRequestError(IHttpRequestControl httpRequestControl, Throwable e
534524
public long quipApp(boolean isFirst, Activity activity) {
535525
//默认配置
536526
if (isFirst) {
537-
ToastUtil.show(com.aries.library.fast.R.string.fast_quit_app);
527+
ToastUtil.show(R.string.fast_quit_app);
538528
} else {
539529
FastStackUtil.getInstance().exit();
540530
}
@@ -557,10 +547,8 @@ private void setStatusBarActivity(Activity activity) {
557547
if (layout != null) {
558548
ViewCompat.setElevation(layout, activity.getResources().getDimension(R.dimen.dp_elevation));
559549
}
560-
// layout.setBackgroundColor(Color.MAGENTA);
561550
//调整返回箭头大小
562551
imageView.setPadding(SizeUtil.dp2px(15), SizeUtil.dp2px(4), SizeUtil.dp2px(4), SizeUtil.dp2px(4));
563-
// imageView.setBackgroundColor(Color.GREEN);
564552
}
565553
}
566554
}

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

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,21 @@
33
import android.view.View;
44

55
import com.aries.library.fast.demo.R;
6+
import com.aries.library.fast.demo.base.BaseItemTouchQuickAdapter;
7+
import com.aries.library.fast.demo.base.BaseItemTouchViewHolder;
68
import com.aries.library.fast.demo.entity.SubjectsEntity;
79
import com.aries.library.fast.demo.helper.RadiusViewHelper;
810
import com.aries.library.fast.manager.GlideManager;
911
import com.aries.ui.view.radius.RadiusRelativeLayout;
10-
import com.chad.library.adapter.base.BaseQuickAdapter;
11-
import com.chad.library.adapter.base.BaseViewHolder;
1212
import com.flyco.labelview.LabelView;
1313

1414
/**
15-
* Created: AriesHoo on 2017/8/23 17:01
16-
* Function: 豆瓣电影适配器
17-
* Desc:
15+
* @Author: AriesHoo on 2018/8/10 9:53
16+
* @E-Mail: AriesHoo@126.com
17+
* Function:
18+
* Description:
1819
*/
19-
public class SubjectMovieAdapter extends BaseQuickAdapter<SubjectsEntity, BaseViewHolder> {
20+
public class SubjectMovieAdapter extends BaseItemTouchQuickAdapter<SubjectsEntity, BaseItemTouchViewHolder> {
2021

2122
boolean isShowTop = false;
2223

@@ -26,16 +27,17 @@ public SubjectMovieAdapter(boolean isShowTop) {
2627
}
2728

2829
@Override
29-
protected void convert(BaseViewHolder helper, SubjectsEntity item) {
30+
protected void convert(BaseItemTouchViewHolder helper, SubjectsEntity item) {
3031
helper.setText(R.id.tv_titleMovie, item.title)
3132
.setText(R.id.tv_typeMovie, "题材:" + item.getGenres())
3233
.setText(R.id.tv_yearMovie, "年份:" + item.year)
3334
.setText(R.id.tv_directorMovie, "导演:" + item.getDirectors())
3435
.setText(R.id.tv_castMovie, "主演:" + item.getCasts());
35-
GlideManager.loadRoundImg(item.images.large, helper.getView(R.id.iv_coverMovie),2);
36+
GlideManager.loadImg(item.images.large, helper.getView(R.id.iv_coverMovie));
3637
LabelView labelView = helper.getView(R.id.lv_topMovie);
3738
labelView.setText("Top" + (helper.getLayoutPosition() + 1));
3839
labelView.setVisibility(isShowTop ? View.VISIBLE : View.GONE);
3940
RadiusViewHelper.getInstance().setRadiusViewAdapter(((RadiusRelativeLayout) helper.itemView).getDelegate());
4041
}
42+
4143
}

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

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,28 @@
33
import android.view.ViewGroup;
44

55
import com.aries.library.fast.demo.R;
6+
import com.aries.library.fast.demo.base.BaseItemTouchQuickAdapter;
7+
import com.aries.library.fast.demo.base.BaseItemTouchViewHolder;
68
import com.aries.library.fast.demo.entity.WidgetEntity;
79
import com.aries.library.fast.demo.helper.RadiusViewHelper;
810
import com.aries.ui.view.radius.RadiusRelativeLayout;
9-
import com.chad.library.adapter.base.BaseQuickAdapter;
10-
import com.chad.library.adapter.base.BaseViewHolder;
1111

1212
import java.util.ArrayList;
1313

1414
/**
15-
* Created: AriesHoo on 2017/7/14 9:55
15+
* @Author: AriesHoo on 2018/8/10 9:51
16+
* @E-Mail: AriesHoo@126.com
1617
* Function: 描述性条目适配器
17-
* Desc:
18+
* Description:
1819
*/
19-
public class WidgetAdapter extends BaseQuickAdapter<WidgetEntity, BaseViewHolder> {
20+
public class WidgetAdapter extends BaseItemTouchQuickAdapter<WidgetEntity, BaseItemTouchViewHolder>{
2021

2122
public WidgetAdapter() {
2223
super(R.layout.item_widget, new ArrayList<>());
2324
}
2425

2526
@Override
26-
protected void convert(BaseViewHolder helper, WidgetEntity item) {
27+
protected void convert(BaseItemTouchViewHolder helper, WidgetEntity item) {
2728
helper.setText(R.id.tv_titleWidget, item.title)
2829
.setText(R.id.tv_contentWidget, item.content);
2930
int marginSize = helper.itemView.getResources().getDimensionPixelSize(R.dimen.dp_margin_item);
@@ -32,4 +33,5 @@ protected void convert(BaseViewHolder helper, WidgetEntity item) {
3233
helper.getLayoutPosition() == getItemCount() - 1 ? marginSize : 0);
3334
RadiusViewHelper.getInstance().setRadiusViewAdapter(((RadiusRelativeLayout) helper.itemView).getDelegate());
3435
}
36+
3537
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.aries.library.fast.demo.base;
2+
3+
import android.support.annotation.LayoutRes;
4+
import android.support.annotation.Nullable;
5+
6+
import com.aries.library.fast.demo.touch.ItemTouchHelperAdapter;
7+
import com.chad.library.adapter.base.BaseQuickAdapter;
8+
import com.chad.library.adapter.base.BaseViewHolder;
9+
10+
import java.util.ArrayList;
11+
import java.util.Collections;
12+
import java.util.List;
13+
14+
/**
15+
* @Author: AriesHoo on 2018/8/10 10:04
16+
* @E-Mail: AriesHoo@126.com
17+
* Function: 实现拖拽排序功能
18+
* Description:
19+
*/
20+
public abstract class BaseItemTouchQuickAdapter<T, K extends BaseViewHolder> extends BaseQuickAdapter<T, K> implements ItemTouchHelperAdapter {
21+
22+
public BaseItemTouchQuickAdapter(@LayoutRes int layoutResId, @Nullable List<T> data) {
23+
super(layoutResId, data);
24+
this.mData = data == null ? new ArrayList<>() : data;
25+
if (layoutResId != 0) {
26+
this.mLayoutResId = layoutResId;
27+
}
28+
}
29+
30+
public BaseItemTouchQuickAdapter(@Nullable List<T> data) {
31+
this(0, data);
32+
}
33+
34+
public BaseItemTouchQuickAdapter(@LayoutRes int layoutResId) {
35+
this(layoutResId, null);
36+
}
37+
38+
@Override
39+
public void onItemMove(int fromPosition, int toPosition) {
40+
if (fromPosition < 0 || toPosition < 0 || toPosition >= getData().size()) {
41+
return;
42+
}
43+
Collections.swap(getData(), fromPosition, toPosition);
44+
notifyItemMoved(fromPosition, toPosition);
45+
}
46+
47+
@Override
48+
public void onItemSwiped(int position) {
49+
50+
}
51+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.aries.library.fast.demo.base;
2+
3+
import android.os.Build;
4+
import android.view.View;
5+
6+
import com.aries.library.fast.demo.touch.ItemTouchHelperViewHolder;
7+
import com.chad.library.adapter.base.BaseViewHolder;
8+
9+
/**
10+
* @Author: AriesHoo on 2018/8/9 17:29
11+
* @E-Mail: AriesHoo@126.com
12+
* Function: 实现拖拽ViewHolder
13+
* Description:
14+
*/
15+
public class BaseItemTouchViewHolder extends BaseViewHolder implements ItemTouchHelperViewHolder {
16+
17+
public BaseItemTouchViewHolder(View view) {
18+
super(view);
19+
}
20+
21+
@Override
22+
public void onItemSelectedChanged() {
23+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
24+
itemView.setTranslationZ(20);
25+
}
26+
}
27+
28+
@Override
29+
public void onItemClear() {
30+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
31+
itemView.setTranslationZ(0);
32+
}
33+
}
34+
35+
}

0 commit comments

Comments
 (0)