Android 防抖動,防止重復點擊

1.概況:

? 在app 使用中經常遇到界面中按鈕 點擊時 連續(xù)點擊兩次或者多次,導致按鈕下邏輯功能重復執(zhí)行,造成資源浪費甚至程序出錯,為了盡量避免這種情況出現,提出防抖動方法。

2.實現思路

<1.? 主要思路為 通過兩次點擊的時間差,來對比是否在最短時間內,來判斷點擊是否有效。

<2. 不同view 通過對比當前點擊View 的id 判斷是否是同一個view,如果是同一個view 進行防抖動校驗,如果不是同一個view,重置當前校驗。

3.代碼實現



public class NoDoubleClickUtil {

? ? public static int mId = -1;

? ? private static long mFirstClickTime;//記錄首次點擊時間

? ? public static boolean checkDoubleClick(int id) {

? ? ? ? long clickTime = System.currentTimeMillis();//記錄當前點擊時間

? ? ? ? if (mId == -1 || mId != id) {//不同view,重置

? ? ? ? ? ? mId = id;

? ? ? ? ? ? mFirstClickTime = clickTime;

? ? ? ? ? ? return true;

}

? ? ? ? if (clickTime - mFirstClickTime > Constant.NO_DOUBLE_CLICK_TIME) {

? ? ? ? //判斷當前時間差是否大于校驗時長,如果大于 判斷為此次不是無效點擊

? ? ? ? ? ? mFirstClickTime = clickTime;

? ? ? ? ? ? return true;

? ? ? ? } else {

? ? ? ? ? ? return false;

}

}

}



4.代碼中使用



@OnClick({R.id.tv_text1, R.id.tv_text2})

public void onViewClicked(View view) {

? ? if (!NoDoubleClickUtil.checkDoubleClick(view.getId())) {//判斷如果是錯誤點擊,直接返回,不執(zhí)行操作

? ? ? ? return;

}

? ? switch (view.getId()) {

? ? ? ? case R.id.tv_text1:

? ? ? ? ? ? ToastUtils.showShortToast(MyApplication.mContext, "點擊1:" + System.nanoTime());

? ? ? ? ? ? break;

? ? ? ? case R.id.tv_text2:

? ? ? ? ? ? ToastUtils.showShortToast(MyApplication.mContext, "點擊2:" + System.nanoTime());

? ? ? ? ? ? break;

}

}



最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容