Skip to content

Commit ac4f6a2

Browse files
committed
1、增加全局控制继承BasisActivity 虚拟导航栏设置沉浸功能
1 parent b4b344e commit ac4f6a2

20 files changed

+431
-43
lines changed

apk/sample.apk

20.8 KB
Binary file not shown.

app/build.gradle

Lines changed: 4 additions & 4 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 221
18-
versionName "2.2.1"
17+
versionCode 229
18+
versionName "2.2.9-alpha"
1919
multiDexEnabled true
2020
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
2121
buildConfigField "String", "BASE_URL", "\"https://api.douban.com/\""
@@ -82,9 +82,9 @@ dependencies {
8282
//万能适配器--一般都需要吧
8383
compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
8484
//webView库 继承FastWebActivity需要,不需要内置WebView可以不compile
85-
compile 'com.just.agentweb:agentweb:2.0.1'
85+
compile 'com.just.agentweb:agentweb:3.0.0'
8686
//常用UI控件(TitleBarView、RadiusView、UIAlertView、UIActionSheetView、UIProgressView等),快速标题栏fast_layout_title_bar,继承FastTitleXXX类需要
87-
compile 'com.github.AriesHoo:UIWidget:2.0.7'
87+
compile 'com.github.AriesHoo:UIWidget:2.0.9'
8888
//下拉刷新库注意刷新头SmartRefreshHeader版本最好对应尤其头版本不要低于SmartRefreshLayout版本
8989
compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.3'
9090
//图片加载 4.X

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,18 @@ public class App extends Application {
3232
@Override
3333
public void onCreate() {
3434
super.onCreate();
35+
//初始化Logger日志打印
36+
LoggerManager.init(TAG, BuildConfig.DEBUG);
3537
start = System.currentTimeMillis();
3638
LoggerManager.d(TAG, "start:" + start);
3739
mContext = this;
38-
//初始化Logger日志打印
39-
LoggerManager.init(TAG, BuildConfig.DEBUG);
4040
//初始化toast工具
4141
ToastUtil.init(mContext, true, ToastUtil.newBuilder()
42-
.setRadius(SizeUtil.dp2px(6))
42+
.setRadius(SizeUtil.dp2px(6))
4343
// .setPaddingLeft(SizeUtil.dp2px(24))
4444
// .setPaddingRight(SizeUtil.dp2px(24))
4545
// .setTextSize(SizeUtil.dp2px(16))
46-
.setGravity(Gravity.BOTTOM)
46+
.setGravity(Gravity.BOTTOM)
4747
);
4848
//初始化Retrofit配置
4949
FastRetrofit.getInstance()
@@ -123,7 +123,9 @@ public void onCreate() {
123123
//设置Retrofit全局异常处理-观察者必须为FastObserver及其子类
124124
.setHttpErrorControl(impl)
125125
//设置SmartRefreshLayout刷新头-自定加载使用BaseRecyclerViewAdapterHelper
126-
.setDefaultRefreshHeader(impl);
126+
.setDefaultRefreshHeader(impl)
127+
//设置虚拟导航栏控制
128+
.setNavigationBarControl(impl);
127129
LoggerManager.d(TAG, "total:" + (System.currentTimeMillis() - start));
128130
}
129131

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

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,21 @@
22

33
import android.app.Activity;
44
import android.content.Context;
5+
import android.graphics.Color;
56
import android.support.annotation.NonNull;
67
import android.support.annotation.Nullable;
78

89
import com.aries.library.fast.demo.helper.RefreshHeaderHelper;
10+
import com.aries.library.fast.entity.FastNavigationConfigEntity;
911
import com.aries.library.fast.i.HttpErrorControl;
1012
import com.aries.library.fast.i.IMultiStatusView;
1113
import com.aries.library.fast.i.LoadMoreFoot;
1214
import com.aries.library.fast.i.LoadingDialog;
1315
import com.aries.library.fast.i.MultiStatusView;
16+
import com.aries.library.fast.i.NavigationBarControl;
1417
import com.aries.library.fast.manager.LoggerManager;
1518
import com.aries.library.fast.retrofit.FastError;
19+
import com.aries.library.fast.util.SizeUtil;
1620
import com.aries.library.fast.util.ToastUtil;
1721
import com.aries.library.fast.widget.FastLoadDialog;
1822
import com.aries.library.fast.widget.FastLoadMoreView;
@@ -33,7 +37,7 @@
3337
* Description:
3438
*/
3539
public class AppImpl implements DefaultRefreshHeaderCreater
36-
, LoadMoreFoot, MultiStatusView, LoadingDialog, HttpErrorControl {
40+
, LoadMoreFoot, MultiStatusView, LoadingDialog, HttpErrorControl, NavigationBarControl {
3741

3842
private Context mContext;
3943
private String TAG = this.getClass().getSimpleName();
@@ -75,6 +79,7 @@ public LoadMoreView createDefaultLoadMoreView(BaseQuickAdapter adapter) {
7579
//默认配置请参考FastLoadMoreView.Builder(mContext)里初始化
7680
return new FastLoadMoreView.Builder(mContext)
7781
.setLoadingTextFakeBold(true)
82+
.setLoadingSize(SizeUtil.dp2px(20))
7883
// .setLoadTextColor(Color.MAGENTA)
7984
// //设置Loading 颜色-5.0以上有效
8085
// .setLoadingProgressColor(Color.MAGENTA)
@@ -188,4 +193,16 @@ public boolean createHttpErrorControl(int errorRes, int errorCode, @io.reactivex
188193
//返回值true则FastObserver不会回调_onError所有逻辑处理都在全局位置处理
189194
return false;
190195
}
196+
197+
@NonNull
198+
@Override
199+
public FastNavigationConfigEntity createNavigationBarControl(Activity activity) {
200+
return new FastNavigationConfigEntity()
201+
//设置为true其它两个属性才有效
202+
.setControlEnable(true)
203+
//设置为true color属性有效不然为系统默认的半透明效果
204+
.setTransEnable(false)
205+
.setColor(Color.argb(102,0,0,0));
206+
//半透明效果alpha为102;
207+
}
191208
}

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

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323
* Desc:
2424
*/
2525
public class SplashActivity extends FastTitleActivity {
26-
27-
@BindView(R.id.tv_versionSplash) TextView tvVersion;
2826

27+
@BindView(R.id.tv_versionSplash) TextView tvVersion;
28+
@BindView(R.id.tv_copyRightSplash) TextView tvCopyRight;
2929
@Override
3030
public void beforeSetContentView() {
3131
if (!isTaskRoot()) {//防止应用后台后点击桌面图标造成重启的假象---MIUI及Flyme上发现过(原生未发现)
@@ -64,4 +64,22 @@ public void timeEnd() {
6464
}).compose(bindUntilEvent(ActivityEvent.DESTROY));
6565
}
6666

67+
// @Override
68+
// protected NavigationBarControl getNavigationBarControl() {
69+
// return new NavigationBarControl() {
70+
// @NonNull
71+
// @Override
72+
// public FastNavigationConfigEntity createNavigationBarControl(Activity activity) {
73+
// return new FastNavigationConfigEntity()
74+
// .setControlEnable(true)
75+
// .setTransEnable(true)
76+
// .setColor(Color.argb(80,0,0,0));
77+
// }
78+
// };
79+
// }
80+
//
81+
// @Override
82+
// protected View getNavigationBarControlView() {
83+
// return tvCopyRight;
84+
// }
6785
}

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

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

33
import android.app.Activity;
4+
import android.content.Context;
5+
import android.content.Intent;
46
import android.content.res.Configuration;
7+
import android.net.Uri;
58
import android.os.Build;
69
import android.os.Bundle;
10+
import android.support.v4.content.FileProvider;
11+
import android.text.TextUtils;
712
import android.view.View;
813
import android.webkit.WebView;
914

1015
import com.aries.library.fast.manager.LoggerManager;
1116
import com.aries.library.fast.module.activity.FastWebActivity;
1217
import com.aries.ui.view.title.TitleBarView;
13-
import com.just.library.AgentWeb;
18+
import com.just.agentweb.AgentWeb;
19+
import com.just.agentweb.DownLoadResultListener;
20+
21+
import java.io.File;
1422

1523
/**
1624
* Created: AriesHoo on 2017/10/13 8:47
@@ -61,7 +69,26 @@ public void setTitleBar(TitleBarView titleBar) {
6169
}
6270

6371
@Override
64-
protected void setAgentWeb(AgentWeb mAgentWeb, AgentWeb.CommonAgentBuilder mAgentBuilder) {
72+
protected void setAgentWeb(AgentWeb.CommonAgentBuilder mAgentBuilder) {
73+
super.setAgentWeb(mAgentBuilder);
74+
mAgentBuilder.addDownLoadResultListener(new DownLoadResultListener() {
75+
@Override
76+
public void success(String path) {
77+
if (path.endsWith(".apk")) {
78+
installApk(getApplicationContext(), path);
79+
}
80+
}
81+
82+
@Override
83+
public void error(String path, String resUrl, String cause, Throwable e) {
84+
85+
}
86+
});
87+
}
88+
89+
@Override
90+
protected void setAgentWeb(AgentWeb mAgentWeb) {
91+
super.setAgentWeb(mAgentWeb);
6592
WebView mWebView = mAgentWeb.getWebCreator().get();
6693
mWebView.setOnLongClickListener(new View.OnLongClickListener() {
6794
@Override
@@ -84,6 +111,24 @@ public void initView(Bundle savedInstanceState) {
84111

85112
}
86113

114+
115+
private void installApk(Context context, String apkPath) {
116+
if (context == null || TextUtils.isEmpty(apkPath)) {
117+
return;
118+
}
119+
File file = new File(apkPath);
120+
Intent intent = new Intent(Intent.ACTION_VIEW);
121+
//判读版本是否在7.0以上
122+
if (Build.VERSION.SDK_INT >= 24) {
123+
Uri apkUri = FileProvider.getUriForFile(context, context.getPackageName() + ".AgentWebFileProvider", file);
124+
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
125+
intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
126+
} else {
127+
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
128+
}
129+
context.startActivity(intent);
130+
}
131+
87132
@Override
88133
public void onConfigurationChanged(Configuration newConfig) {
89134
super.onConfigurationChanged(newConfig);

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

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

33
import android.os.Bundle;
4+
import android.view.View;
45

56
import com.aries.library.fast.demo.R;
67
import com.aries.library.fast.demo.module.activity.ActivityFragment;
@@ -58,4 +59,8 @@ public void initView(Bundle savedInstanceState) {
5859
// .setBackgroundColor(Color.MAGENTA));
5960
}
6061

62+
@Override
63+
protected View getNavigationBarControlView() {
64+
return null;
65+
}
6166
}

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

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

33
import android.os.Bundle;
4+
import android.view.Gravity;
45
import android.view.View;
56
import android.widget.Toast;
67

@@ -41,7 +42,7 @@ public void onViewClicked(View view) {
4142
Toast.makeText(mContext, R.string.toast_system, Toast.LENGTH_SHORT).show();
4243
break;
4344
case R.id.rtv_normal:
44-
ToastUtil.show(R.string.toast_normal);
45+
ToastUtil.show(R.string.toast_normal, ToastUtil.newBuilder().setGravity(Gravity.CENTER));
4546
break;
4647
case R.id.rtv_success:
4748
ToastUtil.showSuccess(R.string.toast_success);

app/src/main/java/com/aries/library/fast/demo/module/main/sample/ali/ALiPayMainActivity.java

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

33
import android.os.Bundle;
4+
import android.view.View;
45

56
import com.aries.library.fast.demo.R;
67
import com.aries.library.fast.entity.FastTabEntity;
@@ -10,13 +11,16 @@
1011
import java.util.ArrayList;
1112
import java.util.List;
1213

14+
import butterknife.BindView;
15+
1316
/**
1417
* Created: AriesHoo on 2017/8/5 20:48
1518
* Function: 快速实现支付宝主页
1619
* Desc:
1720
*/
1821
public class ALiPayMainActivity extends FastMainActivity {
1922

23+
@BindView(R.id.tabLayout_commonFastLib) CommonTabLayout mTabLayout;
2024
String[] titles;
2125

2226
@Override
@@ -58,4 +62,9 @@ public void initView(Bundle savedInstanceState) {
5862
public void onBackPressed() {
5963
finish();
6064
}
65+
66+
@Override
67+
protected View getNavigationBarControlView() {
68+
return mTabLayout;
69+
}
6170
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
tools:text="V1.0.0"/>
4040

4141
<TextView
42-
android:id="@+id/tv_copyrightSplash"
42+
android:id="@+id/tv_copyRightSplash"
4343
android:layout_width="wrap_content"
4444
android:layout_height="wrap_content"
4545
android:paddingBottom="12dp"

library/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ android {
88
defaultConfig {
99
minSdkVersion 15
1010
targetSdkVersion 25
11-
versionCode 221
12-
versionName "2.2.1"
11+
versionCode 229
12+
versionName "2.2.9-alpha"
1313
}
1414
buildTypes {
1515
release {
@@ -47,9 +47,9 @@ dependencies {
4747
//万能适配器
4848
provided 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
4949
//webView库
50-
provided 'com.just.agentweb:agentweb:2.0.1'
50+
provided 'com.just.agentweb:agentweb:3.0.0'
5151
//常用UI控件(TitleBarView、RadiusView等)
52-
provided 'com.github.AriesHoo:UIWidget:2.0.7'
52+
provided 'com.github.AriesHoo:UIWidget:2.0.9'
5353
//下拉刷新库
5454
provided 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.3'
5555
//图片加载

library/src/main/java/com/aries/library/fast/FastConfig.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.aries.library.fast.basis.BasisFragment;
2121
import com.aries.library.fast.delegate.FastRefreshLoadDelegate;
2222
import com.aries.library.fast.delegate.FastTitleDelegate;
23+
import com.aries.library.fast.entity.FastNavigationConfigEntity;
2324
import com.aries.library.fast.entity.FastQuitConfigEntity;
2425
import com.aries.library.fast.entity.FastTitleConfigEntity;
2526
import com.aries.library.fast.i.HttpErrorControl;
@@ -28,6 +29,7 @@
2829
import com.aries.library.fast.i.LoadMoreFoot;
2930
import com.aries.library.fast.i.LoadingDialog;
3031
import com.aries.library.fast.i.MultiStatusView;
32+
import com.aries.library.fast.i.NavigationBarControl;
3133
import com.aries.library.fast.manager.GlideManager;
3234
import com.aries.library.fast.retrofit.FastLoadingObserver;
3335
import com.aries.library.fast.retrofit.FastObserver;
@@ -157,6 +159,15 @@ public boolean createHttpErrorControl(int errorRes, int errorCode, @NonNull Thro
157159
return false;
158160
}
159161
});
162+
setNavigationBarControl(new NavigationBarControl() {
163+
@NonNull
164+
@Override
165+
public FastNavigationConfigEntity createNavigationBarControl(Activity activity) {
166+
return new FastNavigationConfigEntity()
167+
.setControlEnable(true)
168+
.setTransEnable(false);
169+
}
170+
});
160171
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
161172
setContentViewBackgroundResource(-1);
162173
setSwipeBackEnable(false, null);
@@ -202,6 +213,8 @@ public boolean createHttpErrorControl(int errorRes, int errorCode, @NonNull Thro
202213
*/
203214
private HttpErrorControl mHttpErrorControl;
204215

216+
private NavigationBarControl mNavigationBarControl;
217+
205218
public FastTitleConfigEntity getTitleConfig() {
206219
return mTitleConfig;
207220
}
@@ -290,7 +303,7 @@ public FastConfig setSwipeBackEnable(boolean swipeBackEnable, Application applic
290303
throw new NullPointerException(FastConstant.EXCEPTION_SWIPE_BACK_APPLICATION_NOT_NULL);
291304
}
292305
mIsSwipeBackEnable = swipeBackEnable;
293-
if (application != null&&
306+
if (application != null &&
294307
FastUtil.isClassExist("cn.bingoogolapple.swipebacklayout.BGASwipeBackManager")) {
295308
BGASwipeBackManager.getInstance().init(application);//初始化滑动返回关闭Activity功能
296309
// 导航栏处理--不设置会预留一块导航栏高度的空白
@@ -388,6 +401,17 @@ public FastConfig setHttpErrorControl(HttpErrorControl mHttpErrorControl) {
388401
return this;
389402
}
390403

404+
public NavigationBarControl getNavigationBarControl() {
405+
return mNavigationBarControl;
406+
}
407+
408+
public FastConfig setNavigationBarControl(NavigationBarControl navigationBarControl) {
409+
if (navigationBarControl != null) {
410+
mNavigationBarControl = navigationBarControl;
411+
}
412+
return this;
413+
}
414+
391415
/**
392416
* 设置加载图片占位图颜色
393417
*

0 commit comments

Comments
 (0)