沒有卡頓的全域設定防暴力點擊事件
這個功能的核心思想是在baseactivity復寫dispatchTouchEvent方法,通過判斷手指按下螢屏與抬起螢屏的事件間隔來判定是否是點擊事件,然后再通過兩次點擊事件間隔來判定是否為暴力點擊
一.創建Utils工具類,來驗證兩次點擊的間隔
/**
* @name
* * @class name:
* @class describe *
* @anthor chuangcui 郵箱:919953719@qq.com
* @time 11/23/20 4:19 PM
*/
public class Utils {
private static final int MIN_DELAY_TIME= 500; // 兩次點擊間隔不能少于500ms
private static long lastClickTime;
public static boolean isFastClick() {
boolean flag = true;
long currentClickTime = System.currentTimeMillis();
if ((currentClickTime - lastClickTime) >= MIN_DELAY_TIME) {
flag = false;
}
lastClickTime = currentClickTime;
return flag;
}
}
二.復寫BaseActivity的dispatchTouchEvent事件
private final int MIN_DELAY_TIME= 300; // 點擊與抬起手勢間隔小于300ms則認為是點擊事件
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN){
// 獲取手指按下螢屏時間
ClickTime= System.currentTimeMillis();
}
if (ev.getAction() == MotionEvent.ACTION_UP){
// 獲取手指抬起時的時間
long currentClickTime = System.currentTimeMillis();
//判斷手勢按下與抬起時的時間間隔小300ms則認為是點擊事件
if ((currentClickTime - ClickTime) <= MIN_DELAY_TIME) {
if (Utils.isFastClick()){
return true;
}
}
}
return super.dispatchTouchEvent(ev);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/227559.html
標籤:其他
