Skip to content

Commit 22d42a2

Browse files
AriesHooAriesHoo
authored andcommitted
优化:新增BasisActivity 事件派发全局控制
修复:增加ToastUtil 判断华为手机Android 9.0快速弹出第二次不显示问题并增加全局控制ToastControl
1 parent 24d1e63 commit 22d42a2

File tree

11 files changed

+306
-10
lines changed

11 files changed

+306
-10
lines changed

apk/sample.apk

880 Bytes
Binary file not shown.

apk/update

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"versionCode": 235,
3-
"versionName": "2.2.10-beta22",
3+
"versionName": "2.2.10-beta23",
44
"url": "https://raw.githubusercontent.com/AriesHoo/FastLib/master/apk/sample.apk",
55
"force": true,
66
"size": "3.77M",
7-
"message": "\n1、优化:软键盘控制帮助类KeyboardHelper增加对全面屏及导航栏可动态开关优化\n2、优化:将TabLayout Fork下来以远程方式加载"
7+
"message": "\n1、优化:新增BasisActivity 事件派发全局控制\n2、修复:增加ToastUtil 判断华为手机Android 9.0快速弹出第二次不显示问题并增加全局控制ToastControl
88
}

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,14 @@ public void onCreate() {
6262
.setActivityFragmentControl(activityControl)
6363
//设置BasisActivity 子类按键监听
6464
.setActivityKeyEventControl(activityControl)
65+
//配置BasisActivity 子类事件派发相关
66+
.setActivityDispatchEventControl(activityControl)
6567
//设置http请求结果全局控制
6668
.setHttpRequestControl(new HttpRequestControlImpl())
6769
//设置主页返回键控制-默认效果为2000 毫秒时延退出程序
68-
.setQuitAppControl(impl);
70+
.setQuitAppControl(impl)
71+
//设置ToastUtil全局控制
72+
.setToastControl(impl);
6973

7074
//初始化Retrofit配置
7175
FastRetrofit.getInstance()
@@ -130,6 +134,7 @@ public static boolean isControlNavigation() {
130134
LoggerManager.i(TAG, "mode:" + Build.MODEL);
131135
return true;
132136
}
137+
133138
public static Context getContext() {
134139
return mContext;
135140
}

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

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,9 @@
1313
import android.support.v4.app.FragmentManager;
1414
import android.support.v4.view.ViewCompat;
1515
import android.view.KeyEvent;
16+
import android.view.MotionEvent;
1617
import android.view.View;
18+
import android.view.accessibility.AccessibilityEvent;
1719
import android.widget.ImageView;
1820
import android.widget.RelativeLayout;
1921

@@ -23,6 +25,7 @@
2325
import com.aries.library.fast.demo.R;
2426
import com.aries.library.fast.demo.module.SplashActivity;
2527
import com.aries.library.fast.demo.module.main.MainActivity;
28+
import com.aries.library.fast.i.ActivityDispatchEventControl;
2629
import com.aries.library.fast.i.ActivityFragmentControl;
2730
import com.aries.library.fast.i.ActivityKeyEventControl;
2831
import com.aries.library.fast.impl.FastActivityLifecycleCallbacks;
@@ -53,7 +56,7 @@
5356
* @Function: Activity/Fragment 生命周期全局处理及BasisActivity 的按键处理
5457
* @Description:
5558
*/
56-
public class ActivityControlImpl implements ActivityFragmentControl, ActivityKeyEventControl {
59+
public class ActivityControlImpl implements ActivityFragmentControl, ActivityKeyEventControl, ActivityDispatchEventControl {
5760
private static String TAG = "ActivityControlImpl";
5861
/**
5962
* Audio管理器,用了控制音量
@@ -350,4 +353,43 @@ private void setStatusBarActivity(Activity activity) {
350353
protected boolean isTrans(Activity activity) {
351354
return RomUtil.isEMUI() && (RomUtil.getEMUIVersion().compareTo("EmotionUI_4.1") > 0) && activity.getClass() != SplashActivity.class;
352355
}
356+
357+
/**
358+
* @param activity
359+
* @param event
360+
* @return
361+
*/
362+
@Override
363+
public boolean dispatchTouchEvent(Activity activity, MotionEvent event) {
364+
//根据事件派发全局控制点击非EditText 关闭软键盘
365+
if (activity != null) {
366+
KeyboardHelper.handleAutoCloseKeyboard(true, activity.getCurrentFocus(), event, activity);
367+
}
368+
return false;
369+
}
370+
371+
@Override
372+
public boolean dispatchGenericMotionEvent(Activity activity, MotionEvent event) {
373+
return false;
374+
}
375+
376+
@Override
377+
public boolean dispatchKeyEvent(Activity activity, KeyEvent event) {
378+
return false;
379+
}
380+
381+
@Override
382+
public boolean dispatchKeyShortcutEvent(Activity activity, KeyEvent event) {
383+
return false;
384+
}
385+
386+
@Override
387+
public boolean dispatchTrackballEvent(Activity activity, MotionEvent event) {
388+
return false;
389+
}
390+
391+
@Override
392+
public boolean dispatchPopulateAccessibilityEvent(Activity activity, AccessibilityEvent event) {
393+
return false;
394+
}
353395
}

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import android.support.v4.content.ContextCompat;
1111
import android.support.v4.view.ViewCompat;
1212
import android.support.v7.widget.RecyclerView;
13+
import android.widget.Toast;
1314

1415
import com.aries.library.fast.demo.R;
1516
import com.aries.library.fast.i.FastRecyclerViewControl;
@@ -19,6 +20,7 @@
1920
import com.aries.library.fast.i.MultiStatusView;
2021
import com.aries.library.fast.i.QuitAppControl;
2122
import com.aries.library.fast.i.TitleBarViewControl;
23+
import com.aries.library.fast.i.ToastControl;
2224
import com.aries.library.fast.manager.LoggerManager;
2325
import com.aries.library.fast.util.FastStackUtil;
2426
import com.aries.library.fast.util.FastUtil;
@@ -27,6 +29,7 @@
2729
import com.aries.library.fast.widget.FastLoadDialog;
2830
import com.aries.library.fast.widget.FastLoadMoreView;
2931
import com.aries.ui.util.StatusBarUtil;
32+
import com.aries.ui.view.radius.RadiusTextView;
3033
import com.aries.ui.view.title.TitleBarView;
3134
import com.chad.library.adapter.base.BaseQuickAdapter;
3235
import com.chad.library.adapter.base.loadmore.LoadMoreView;
@@ -47,7 +50,7 @@
4750
*/
4851
public class AppImpl implements DefaultRefreshHeaderCreator, LoadMoreFoot,
4952
FastRecyclerViewControl, MultiStatusView, LoadingDialog,
50-
TitleBarViewControl, QuitAppControl {
53+
TitleBarViewControl, QuitAppControl,ToastControl {
5154

5255
private Context mContext;
5356
private String TAG = this.getClass().getSimpleName();
@@ -208,4 +211,13 @@ public long quipApp(boolean isFirst, Activity activity) {
208211
}
209212

210213

214+
@Override
215+
public Toast getToast() {
216+
return null;
217+
}
218+
219+
@Override
220+
public void setToast(Toast toast, RadiusTextView textView) {
221+
222+
}
211223
}

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,5 @@ ext{
3434
targetSdkVersion = 28
3535
supportVersion = "28.0.0"
3636
versionCode = 235
37-
versionName = "2.2.10-beta22"
37+
versionName = "2.2.10-beta23"
3838
}

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

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import android.support.annotation.Nullable;
77

88
import com.aries.library.fast.delegate.FastRefreshLoadDelegate;
9+
import com.aries.library.fast.i.ActivityDispatchEventControl;
910
import com.aries.library.fast.i.ActivityFragmentControl;
1011
import com.aries.library.fast.i.ActivityKeyEventControl;
1112
import com.aries.library.fast.i.FastRecyclerViewControl;
@@ -16,6 +17,7 @@
1617
import com.aries.library.fast.i.QuitAppControl;
1718
import com.aries.library.fast.i.SwipeBackControl;
1819
import com.aries.library.fast.i.TitleBarViewControl;
20+
import com.aries.library.fast.i.ToastControl;
1921
import com.aries.library.fast.manager.GlideManager;
2022
import com.aries.library.fast.retrofit.FastLoadingObserver;
2123
import com.aries.library.fast.util.ToastUtil;
@@ -85,6 +87,11 @@ public static FastManager getInstance() {
8587
* 配置BasisActivity 子类前台时监听按键相关
8688
*/
8789
private ActivityKeyEventControl mActivityKeyEventControl;
90+
91+
/**
92+
* 配置BasisActivity 子类事件派发相关
93+
*/
94+
private ActivityDispatchEventControl mActivityDispatchEventControl;
8895
/**
8996
* 配置网络请求
9097
*/
@@ -93,6 +100,10 @@ public static FastManager getInstance() {
93100
* Activity 主页点击返回键控制
94101
*/
95102
private QuitAppControl mQuitAppControl;
103+
/**
104+
* ToastUtil相关配置
105+
*/
106+
private ToastControl mToastControl;
96107

97108
public Application getApplication() {
98109
return mApplication;
@@ -260,11 +271,26 @@ public ActivityKeyEventControl getActivityKeyEventControl() {
260271
/**
261272
* 配置BasisActivity 子类前台时监听按键相关
262273
*
263-
* @param activityKeyEventControl
274+
* @param control
275+
* @return
276+
*/
277+
public FastManager setActivityKeyEventControl(ActivityKeyEventControl control) {
278+
mActivityKeyEventControl = control;
279+
return this;
280+
}
281+
282+
public ActivityDispatchEventControl getActivityDispatchEventControl() {
283+
return mActivityDispatchEventControl;
284+
}
285+
286+
/**
287+
* 配置BasisActivity 子类事件派发相关
288+
*
289+
* @param control
264290
* @return
265291
*/
266-
public FastManager setActivityKeyEventControl(ActivityKeyEventControl activityKeyEventControl) {
267-
mActivityKeyEventControl = activityKeyEventControl;
292+
public FastManager setActivityDispatchEventControl(ActivityDispatchEventControl control) {
293+
mActivityDispatchEventControl = control;
268294
return this;
269295
}
270296

@@ -298,4 +324,19 @@ public FastManager setQuitAppControl(QuitAppControl control) {
298324
mQuitAppControl = control;
299325
return this;
300326
}
327+
328+
public ToastControl getToastControl() {
329+
return mToastControl;
330+
}
331+
332+
/**
333+
* 配置ToastUtil
334+
*
335+
* @param control
336+
* @return
337+
*/
338+
public FastManager setToastControl(ToastControl control) {
339+
mToastControl = control;
340+
return this;
341+
}
301342
}

library/src/main/java/com/aries/library/fast/basis/BasisActivity.java

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
package com.aries.library.fast.basis;
22

3+
import android.annotation.SuppressLint;
34
import android.app.Activity;
45
import android.content.Intent;
56
import android.os.Bundle;
67
import android.support.v4.app.Fragment;
78
import android.view.KeyEvent;
9+
import android.view.MotionEvent;
810
import android.view.View;
11+
import android.view.accessibility.AccessibilityEvent;
912
import android.widget.FrameLayout;
1013

1114
import com.aries.library.fast.FastManager;
15+
import com.aries.library.fast.i.ActivityDispatchEventControl;
1216
import com.aries.library.fast.i.ActivityKeyEventControl;
1317
import com.aries.library.fast.i.IBasisView;
1418
import com.aries.library.fast.i.IFastRefreshLoadView;
@@ -172,6 +176,79 @@ public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) {
172176
return super.onKeyMultiple(keyCode, repeatCount, event);
173177
}
174178

179+
@Override
180+
public boolean dispatchTouchEvent(MotionEvent ev) {
181+
ActivityDispatchEventControl control = FastManager.getInstance().getActivityDispatchEventControl();
182+
if (control != null) {
183+
if (control.dispatchTouchEvent(this, ev)) {
184+
return true;
185+
}
186+
return super.dispatchTouchEvent(ev);
187+
}
188+
return super.dispatchTouchEvent(ev);
189+
}
190+
191+
@Override
192+
public boolean dispatchGenericMotionEvent(MotionEvent ev) {
193+
ActivityDispatchEventControl control = FastManager.getInstance().getActivityDispatchEventControl();
194+
if (control != null) {
195+
if (control.dispatchGenericMotionEvent(this, ev)) {
196+
return true;
197+
}
198+
return super.dispatchGenericMotionEvent(ev);
199+
}
200+
return super.dispatchGenericMotionEvent(ev);
201+
}
202+
203+
@Override
204+
public boolean dispatchKeyEvent(KeyEvent event) {
205+
ActivityDispatchEventControl control = FastManager.getInstance().getActivityDispatchEventControl();
206+
if (control != null) {
207+
if (control.dispatchKeyEvent(this, event)) {
208+
return true;
209+
}
210+
return super.dispatchKeyEvent(event);
211+
}
212+
return super.dispatchKeyEvent(event);
213+
}
214+
215+
@SuppressLint("RestrictedApi")
216+
@Override
217+
public boolean dispatchKeyShortcutEvent(KeyEvent event) {
218+
ActivityDispatchEventControl control = FastManager.getInstance().getActivityDispatchEventControl();
219+
if (control != null) {
220+
if (control.dispatchKeyShortcutEvent(this, event)) {
221+
return true;
222+
}
223+
return super.dispatchKeyShortcutEvent(event);
224+
}
225+
return super.dispatchKeyShortcutEvent(event);
226+
}
227+
228+
@Override
229+
public boolean dispatchTrackballEvent(MotionEvent ev) {
230+
ActivityDispatchEventControl control = FastManager.getInstance().getActivityDispatchEventControl();
231+
if (control != null) {
232+
if (control.dispatchTrackballEvent(this, ev)) {
233+
return true;
234+
}
235+
return super.dispatchTrackballEvent(ev);
236+
}
237+
return super.dispatchTrackballEvent(ev);
238+
}
239+
240+
@Override
241+
public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
242+
ActivityDispatchEventControl control = FastManager.getInstance().getActivityDispatchEventControl();
243+
if (control != null) {
244+
if (control.dispatchPopulateAccessibilityEvent(this, event)) {
245+
return true;
246+
}
247+
return super.dispatchPopulateAccessibilityEvent(event);
248+
}
249+
return super.dispatchPopulateAccessibilityEvent(event);
250+
}
251+
175252
@Override
176253
public void beforeSetContentView() {
177254
}

0 commit comments

Comments
 (0)