Skip to content

Commit 7bb1859

Browse files
AriesHoo@126.comAriesHoo@126.com
authored andcommitted
1、新增:抽离IStatusBar及INavigationBar分别管理状态栏及导航栏用于Activity个性化
2、优化:FastMainTabDelegate 回收后tab选中记录并恢复 3、升级:升级widget及SmartRefresh(Androidx版本)
1 parent ffa0830 commit 7bb1859

30 files changed

+351
-201
lines changed

apk/sample.apk

6.05 KB
Binary file not shown.

apk/update

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
2-
"versionCode": 240,
3-
"versionName": "2.2.13",
2+
"versionCode": 241,
3+
"versionName": "2.2.13_beta9",
44
"url": "https://raw.githubusercontent.com/AriesHoo/FastLib/dev/apk/sample.apk",
55
"force": true,
66
"size": "4.85M",
7-
"message": "1、优化:FastLib 在Activity/Fragment生命周期自动处理IFastRefreshView下拉刷新及IFastTitleView 标题栏效果\n2、优化:FastWebActivity增加url自动添加http://功能及规范url\n3、Demo增加三方研发工具doraemonkit\n4、Demo增加网页下拉刷新功能\n5、Demo增加下拉刷新示例Activity"
7+
"message": "1、优化:将状态栏及导航栏相关接口单独抽离用于Activity个性化设置\n2、优化:FastWebActivity增加url自动添加http://功能及规范url\n3、Demo增加三方研发工具doraemonkit\n4、Demo增加网页下拉刷新功能\n5、Demo增加下拉刷新示例Activity"
88
}

app/build.gradle

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ dependencies {
7777
debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.3'
7878
releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.3'
7979
testImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.3'
80-
implementation 'com.github.AriesHoo.UIWidget:widget-core:3.2.14'
8180

8281
//以下库FastLib里使用compileOnly只是编译,使用时需根据项目选择相应版本
8382
implementation 'com.google.android.material:material:'.concat(supportVersion)
@@ -90,14 +89,14 @@ dependencies {
9089
//webView提供下载功能
9190
implementation 'com.just.agentweb:download:4.0.2'
9291
//下拉刷新库注意刷新头SmartRefreshHeader版本最好对应尤其头版本不要低于SmartRefreshLayout版本
93-
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-21'
92+
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-andx-14'
9493
//Glide图片加载
9594
implementation 'com.github.bumptech.glide:glide:4.8.0'
9695
annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
9796
annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
9897
//以上库FastLib里使用compileOnly只是编译,使用时需根据项目选择相应版本
9998
implementation 'cn.bingoogolapple:bga-banner:2.1.7@aar'
100-
implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-alpha-21'
99+
implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0-andx-14'
101100
implementation 'com.github.lygttpod:SuperTextView:2.1.8'
102101
implementation 'com.flyco.labelview:FlycoLabelView_Lib:1.0.2@aar'
103102
//文件选择器

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public void onCreate() {
6666
LoggerManager.i(TAG, "start:" + start + ";Application:" + FastUtil.getApplication());
6767
mContext = this;
6868
//最简单UI配置模式-必须进行初始化
69-
// FastManager.init(this);
69+
// FastManager.init(this);
7070
//以下为更丰富自定义方法
7171
//全局UI配置参数-按需求设置
7272
AppImpl impl = new AppImpl(mContext);

app/src/main/java/com/aries/library/fast/demo/impl/ActivityControlImpl.java

Lines changed: 52 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@
2929
import com.aries.library.fast.i.ActivityKeyEventControl;
3030
import com.aries.library.fast.impl.FastActivityLifecycleCallbacks;
3131
import com.aries.library.fast.manager.LoggerManager;
32-
import com.aries.library.fast.manager.RxJavaManager;
33-
import com.aries.library.fast.retrofit.FastObserver;
3432
import com.aries.library.fast.util.FastStackUtil;
3533
import com.aries.library.fast.util.FastUtil;
3634
import com.aries.library.fast.util.SizeUtil;
@@ -177,35 +175,6 @@ public void setContentViewBackground(View contentView, Class<?> cls) {
177175
}
178176
}
179177

180-
/**
181-
* 设置屏幕方向--注意targetSDK设置27以上不能设置windowIsTranslucent=true属性不然应用直接崩溃-强烈建议手机应用锁定竖屏
182-
* 错误为 Only fullscreen activities can request orientation
183-
* 默认自动 ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
184-
* 竖屏 ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
185-
* 横屏 ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
186-
* {@link ActivityInfo#screenOrientation ActivityInfo.screenOrientation}
187-
*
188-
* @param activity
189-
*/
190-
@Override
191-
public void setRequestedOrientation(Activity activity) {
192-
LoggerManager.i("setRequestedOrientation:" + activity.getClass().getSimpleName() + ";:" + (BaseActivity.class.isAssignableFrom(activity.getClass()))
193-
+ ";:" + (UniversalActivity.class.isAssignableFrom(activity.getClass())));
194-
if (BaseActivity.class.isAssignableFrom(activity.getClass())) {
195-
return;
196-
}
197-
//全局控制屏幕横竖屏
198-
//先判断xml没有设置屏幕模式避免将开发者本身想设置的覆盖掉
199-
if (activity.getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) {
200-
try {
201-
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
202-
} catch (Exception e) {
203-
e.printStackTrace();
204-
LoggerManager.e(TAG, "setRequestedOrientation:" + e.getMessage());
205-
}
206-
}
207-
}
208-
209178
/**
210179
* 设置非FastLib且未实现Activity 状态栏功能的三方Activity 状态栏沉浸
211180
*
@@ -219,6 +188,8 @@ public boolean setStatusBar(Activity activity, StatusViewHelper helper, View top
219188
boolean isSupportStatusBarFont = StatusBarUtil.isSupportStatusBarFontChange();
220189
helper.setTransEnable(isSupportStatusBarFont || isLeak(activity))
221190
.setPlusStatusViewEnable(!isLeak(activity))
191+
.setStatusBarLightMode(isSupportStatusBarFont)
192+
.setStatusViewColor(Color.argb(isSupportStatusBarFont?0:102,0,0,0))
222193
.setStatusLayoutColor(Color.WHITE);
223194
setStatusBarActivity(activity);
224195
return true;
@@ -239,23 +210,30 @@ public boolean setNavigationBar(Activity activity, NavigationViewHelper helper,
239210
//其它默认属性请参考FastLifecycleCallbacks
240211
helper.setLogEnable(BuildConfig.DEBUG)
241212
.setTransEnable(true)
242-
.setPlusNavigationViewEnable(isPlusView(activity))
213+
.setPlusNavigationViewEnable(true, !isPlusView(activity), true)
243214
.setNavigationBarLightMode(isDarkIcon() && isPlusView(activity))
244215
//FastLib默认在可变导航栏icon 增加一个0.5dp的灰色分割线
245216
.setNavigationViewDrawableTop(null)
246-
.setOnKeyboardVisibilityChangedListener(mOnKeyboardVisibilityChangedListener)
217+
.setOnKeyboardVisibilityChangedListener(getOnKeyboardVisibilityChangedListener(activity))
247218
.setBottomView(PicturePreviewActivity.class.isAssignableFrom(activity.getClass()) ?
248219
FindViewUtil.getTargetView(bottomView, R.id.select_bar_layout) : bottomView)
249220
.setNavigationViewColor(isLeak(activity) ? Color.BLACK : Color.argb(isDarkIcon() && isPlusView(activity) ? 0 : 102, 0, 0, 0))
250-
.setNavigationLayoutColor(ContextCompat.getColor(activity, R.color.colorTabBackground));
221+
.setNavigationLayoutColor(ContextCompat.getColor(activity, !isPlusView(activity) ? R.color.transparent : R.color.colorTabBackground));
251222
if (!isControlNavigation() && !(activity instanceof MainActivity)) {
252223
KeyboardHelper.with(activity)
253224
.setEnable()
254-
.setOnKeyboardVisibilityChangedListener(mOnKeyboardVisibilityChangedListener);
225+
.setOnKeyboardVisibilityChangedListener(getOnKeyboardVisibilityChangedListener(activity));
255226
}
256227
return isControlNavigation();
257228
}
258229

230+
private KeyboardHelper.OnKeyboardVisibilityChangedListener getOnKeyboardVisibilityChangedListener(Activity activity) {
231+
if (activity instanceof KeyboardHelper.OnKeyboardVisibilityChangedListener) {
232+
return (KeyboardHelper.OnKeyboardVisibilityChangedListener) activity;
233+
}
234+
return mOnKeyboardVisibilityChangedListener;
235+
}
236+
259237
/**
260238
* 是否全透明-华为4.1以上、小米V6以上及Android O以上版本
261239
* 可根据导航栏位置颜色设置导航图标颜色
@@ -285,6 +263,34 @@ protected boolean isPlusView(Activity activity) {
285263
return false;
286264
};
287265

266+
/**
267+
* 设置屏幕方向--注意targetSDK设置27以上不能设置windowIsTranslucent=true属性不然应用直接崩溃-强烈建议手机应用锁定竖屏
268+
* 错误为 Only fullscreen activities can request orientation
269+
* 默认自动 ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
270+
* 竖屏 ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
271+
* 横屏 ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
272+
* {@link ActivityInfo#screenOrientation ActivityInfo.screenOrientation}
273+
*
274+
* @param activity
275+
*/
276+
public void setActivityOrientation(Activity activity) {
277+
LoggerManager.i("setRequestedOrientation:" + activity.getClass().getSimpleName() + ";:" + (BaseActivity.class.isAssignableFrom(activity.getClass()))
278+
+ ";:" + (UniversalActivity.class.isAssignableFrom(activity.getClass())));
279+
if (BaseActivity.class.isAssignableFrom(activity.getClass())) {
280+
return;
281+
}
282+
//全局控制屏幕横竖屏
283+
//先判断xml没有设置屏幕模式避免将开发者本身想设置的覆盖掉
284+
if (activity.getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) {
285+
try {
286+
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
287+
} catch (Exception e) {
288+
e.printStackTrace();
289+
LoggerManager.e(TAG, "setRequestedOrientation:" + e.getMessage());
290+
}
291+
}
292+
}
293+
288294
/**
289295
* Activity 生命周期监听--可用于三方统计页面数据
290296
* 示例仅为参考如无需添加自己代码可回调null
@@ -309,6 +315,7 @@ public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
309315
super.onActivityCreated(activity, savedInstanceState);
310316
//阻止系统截屏功能
311317
//activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
318+
setActivityOrientation(activity);
312319
}
313320

314321
@Override
@@ -411,16 +418,16 @@ private void setStatusBarActivity(Activity activity) {
411418
imageView.setPadding(SizeUtil.dp2px(15), SizeUtil.dp2px(4), SizeUtil.dp2px(4), SizeUtil.dp2px(4));
412419
}
413420
}
414-
RxJavaManager.getInstance().setTimer(100)
415-
.subscribe(new FastObserver<Long>() {
416-
@Override
417-
public void _onNext(Long entity) {
418-
if (isLeak(activity)) {
419-
return;
420-
}
421-
StatusBarUtil.setStatusBarLightMode(activity);
422-
}
423-
});
421+
// RxJavaManager.getInstance().setTimer(100)
422+
// .subscribe(new FastObserver<Long>() {
423+
// @Override
424+
// public void _onNext(Long entity) {
425+
// if (isLeak(activity)) {
426+
// return;
427+
// }
428+
// StatusBarUtil.setStatusBarLightMode(activity);
429+
// }
430+
// });
424431
}
425432

426433
/**

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

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,9 @@ public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout)
9595
public LoadMoreView createDefaultLoadMoreView(BaseQuickAdapter adapter) {
9696
if (adapter != null) {
9797
//设置动画是否一直开启
98-
adapter.isFirstOnly(true);
99-
adapter.setDuration(1000);
98+
adapter.isFirstOnly(false);
10099
//设置动画
101-
adapter.openLoadAnimation(BaseQuickAdapter.SLIDEIN_BOTTOM);
100+
adapter.openLoadAnimation(BaseQuickAdapter.SCALEIN);
102101
adapter.openLoadAnimation();
103102
}
104103
//方式一:设置FastLoadMoreView--可参考FastLoadMoreView.Builder相应set方法
@@ -255,10 +254,6 @@ public void setToast(Toast toast, RadiusTextView textView) {
255254
*/
256255
@Override
257256
public boolean onError(FastObserver o, Throwable e) {
258-
if (e instanceof FastNullException) {
259-
o._onNext(null);
260-
return true;
261-
}
262257
return false;
263258
}
264259
}

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.aries.library.fast.demo.module;
22

33
import android.graphics.Color;
4-
import android.graphics.drawable.Drawable;
54
import android.os.Bundle;
65
import android.view.View;
76
import android.view.WindowManager;
@@ -67,9 +66,9 @@ public void initView(Bundle savedInstanceState) {
6766
//隐藏状态栏
6867
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
6968
}
70-
Drawable drawable = ContextCompat.getDrawable(mContext, R.drawable.ic_launcher);
71-
DrawableUtil.setTintDrawable(drawable, Color.WHITE);
72-
tvApp.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null);
69+
tvApp.setCompoundDrawablesWithIntrinsicBounds(null,
70+
DrawableUtil.setTintDrawable(ContextCompat.getDrawable(mContext, R.drawable.ic_launcher).mutate(), Color.WHITE)
71+
, null, null);
7372
mContentView.setBackgroundResource(R.drawable.img_bg_login);
7473
tvVersion.setText("V" + FastUtil.getVersionName(mContext));
7574
tvVersion.setTextColor(Color.WHITE);

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
import com.just.agentweb.download.DefaultDownloadImpl;
5050
import com.just.agentweb.download.DownloadListenerAdapter;
5151
import com.just.agentweb.download.DownloadingService;
52-
import com.scwang.smartrefresh.header.WaterDropHeader;
52+
import com.scwang.smartrefresh.header.StoreHouseHeader;
5353
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
5454
import com.scwang.smartrefresh.layout.api.RefreshLayout;
5555

@@ -255,8 +255,10 @@ public View getContentView() {
255255
@Override
256256
public void setRefreshLayout(SmartRefreshLayout refreshLayout) {
257257
this.mRefreshLayout = refreshLayout;
258-
refreshLayout.setRefreshHeader(new WaterDropHeader(this))
259-
.setPrimaryColorsId(R.color.colorTextBlack)
258+
refreshLayout.setRefreshHeader(new StoreHouseHeader(mContext)
259+
.initWithString("FastLib Refresh")
260+
.setTextColor(ContextCompat.getColor(mContext, R.color.colorTextBlack)))
261+
.setPrimaryColorsId(R.color.transparent)
260262
.setEnableHeaderTranslationContent(true);
261263
}
262264

app/src/main/res/layout/activity_test_status.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
33
android:layout_width="match_parent"
44
android:layout_height="match_parent"
5+
android:fitsSystemWindows="false"
56
android:background="@android:color/holo_purple"
67
android:orientation="vertical">
78

app/src/main/res/values/dimens.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<dimen name="dp_banner_point">8dp</dimen>
44

55
<dimen name="dp_margin_item">10dp</dimen>
6-
<dimen name="dp_elevation">4dp</dimen>
6+
<dimen name="dp_elevation">2dp</dimen>
77
<dimen name="dp_radius">2dp</dimen>
88
<dimen name="grid_expected_size">120dp</dimen>
99
<!-- Default screen margins, per the Android Design guidelines. -->

0 commit comments

Comments
 (0)