Android之有效防止按鈕多次重復(fù)點(diǎn)擊的方法(必看篇)
為了防止測試妹子或者用戶頻繁點(diǎn)擊某個按鈕,導(dǎo)致程序在短時間內(nèi)進(jìn)行多次數(shù)據(jù)提交or數(shù)據(jù)處理,那到時候就比較坑了~
那么如何有效避免這種情況的發(fā)生呢?
我的想法是,判斷用戶點(diǎn)擊按鈕間隔時間,如果間隔時間太短,則認(rèn)為是無效操作,否則進(jìn)行相關(guān)業(yè)務(wù)處理
首先將這塊提取為工具類(方便接下來的調(diào)用),現(xiàn)在就起名為:ButtonUtils
public class ButtonUtils {
private static long lastClickTime = 0;
private static long DIFF = 1000;
private static int lastButtonId = -1;
/**
* 判斷兩次點(diǎn)擊的間隔,如果小于1000,則認(rèn)為是多次無效點(diǎn)擊
*
* @return
*/
public static boolean isFastDoubleClick() {
return isFastDoubleClick(-1, DIFF);
}
/**
* 判斷兩次點(diǎn)擊的間隔,如果小于1000,則認(rèn)為是多次無效點(diǎn)擊
*
* @return
*/
public static boolean isFastDoubleClick(int buttonId) {
return isFastDoubleClick(buttonId, DIFF);
}
/**
* 判斷兩次點(diǎn)擊的間隔,如果小于diff,則認(rèn)為是多次無效點(diǎn)擊
*
* @param diff
* @return
*/
public static boolean isFastDoubleClick(int buttonId, long diff) {
long time = System.currentTimeMillis();
long timeD = time - lastClickTime;
if (lastButtonId == buttonId && lastClickTime > 0 && timeD < diff) {
Log.v("isFastDoubleClick", "短時間內(nèi)按鈕多次觸發(fā)");
return true;
}
lastClickTime = time;
lastButtonId = buttonId;
return false;
}
}
我們通過判斷倆次點(diǎn)擊時間間隔去判定當(dāng)前點(diǎn)擊操作是否為有效操作。那么如何在使用中調(diào)用呢?繼續(xù)往下看。。。
gv_isf.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
if (!ButtonUtils.isFastDoubleClick(R.id.gv_integralstore)) {
//寫你相關(guān)操作即可
}
}
});
!ButtonUtils.isFastDoubleClick(R.id.gv_integralstore):這塊是關(guān)鍵。我的想法就是在單擊事件中進(jìn)行判斷,看看當(dāng)前的點(diǎn)擊事件是否為有效點(diǎn)擊事件
好了,一個簡單又實(shí)用的防止按鈕多次重復(fù)點(diǎn)擊的工具類就搞定了。。。
以上這篇Android之有效防止按鈕多次重復(fù)點(diǎn)擊的方法(必看篇)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Android 處理 View 重復(fù)點(diǎn)擊的多種方法
- Android開發(fā)教程之如何屏蔽View的重復(fù)點(diǎn)擊
- Android中如何優(yōu)雅的處理重復(fù)點(diǎn)擊實(shí)例代碼
- Android中AOP的應(yīng)用實(shí)踐之過濾重復(fù)點(diǎn)擊
- Android優(yōu)雅地處理按鈕重復(fù)點(diǎn)擊的幾種方法
- Android防止按鈕重復(fù)點(diǎn)擊示例代碼
- Android 防止多次重復(fù)點(diǎn)擊的三種方法的示例
- Android 快速實(shí)現(xiàn)防止網(wǎng)絡(luò)重復(fù)請求&按鈕重復(fù)點(diǎn)擊的方法
- 實(shí)例詳解Android解決按鈕重復(fù)點(diǎn)擊問題
- Android如何優(yōu)雅的處理重復(fù)點(diǎn)擊
相關(guān)文章
Android之AnimationDrawable簡單模擬動態(tài)圖
這篇文章主要為大家詳細(xì)介紹了Android之AnimationDrawable簡單模擬動態(tài)圖的實(shí)現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-09-09
Android App開發(fā)中使用RecyclerView實(shí)現(xiàn)Gallery畫廊的實(shí)例
這篇文章主要介紹了Android App開發(fā)中使用RecyclerView實(shí)現(xiàn)Gallery畫廊的實(shí)例,比普通的ListView實(shí)現(xiàn)的效果更為強(qiáng)大,需要的朋友可以參考下2016-04-04
Android利用ContentProvider獲取聯(lián)系人信息
這篇文章主要為大家詳細(xì)介紹了Android利用ContentProvider獲取聯(lián)系人信息,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11
Android ListView 子控件onClick正確獲取position的方法
這篇文章主要介紹了Android ListView 子控件onClick正確獲取position的方法,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧2017-01-01
解決android6.0以上不能讀取外部存儲權(quán)限的問題
今天小編就為大家分享一篇解決android6.0以上不能讀取外部存儲權(quán)限的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
Activity跳轉(zhuǎn)時生命周期跟蹤的實(shí)例
下面小編就為大家?guī)硪黄狝ctivity跳轉(zhuǎn)時生命周期跟蹤的實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
Android編程使用HTTP協(xié)議與TCP協(xié)議實(shí)現(xiàn)上傳文件的方法
這篇文章主要介紹了Android編程使用HTTP協(xié)議與TCP協(xié)議實(shí)現(xiàn)上傳文件的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android使用HTTP協(xié)議與TCP協(xié)議的具體步驟與實(shí)現(xiàn)文件傳輸?shù)南嚓P(guān)技巧,需要的朋友可以參考下2016-01-01
flutter 路由機(jī)制的實(shí)現(xiàn)
本文主要介紹 flutter 中的路由實(shí)現(xiàn)原理,包括初始化時的頁面加載、切換頁面的底層機(jī)制等。具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07
Android自定義ViewFlipper實(shí)現(xiàn)滾動效果
這篇文章主要為大家詳細(xì)介紹了Android自定義ViewFlipper實(shí)現(xiàn)滾動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08

