為了防止測試妹子或者用戶頻繁點擊某個按鈕,導致程序在短時間內進行多次數據提交or數據處理,那到時候就比較坑了~
那么如何有效避免這種情況的發生呢?
我的想法是,判斷用戶點擊按鈕間隔時間,如果間隔時間太短,則認為是無效操作,否則進行相關業務處理
首先將這塊提取為工具類(方便接下來的調用),現在就起名為:ButtonUtils
public class ButtonUtils { private static long lastClickTime = 0; private static long DIFF = 1000; private static int lastButtonId = -1; /** * 判斷兩次點擊的間隔,如果小于1000,則認為是多次無效點擊 * * @return */ public static boolean isFastDoubleClick() { return isFastDoubleClick(-1, DIFF); } /** * 判斷兩次點擊的間隔,如果小于1000,則認為是多次無效點擊 * * @return */ public static boolean isFastDoubleClick(int buttonId) { return isFastDoubleClick(buttonId, DIFF); } /** * 判斷兩次點擊的間隔,如果小于diff,則認為是多次無效點擊 * * @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", "短時間內按鈕多次觸發"); return true; } lastClickTime = time; lastButtonId = buttonId; return false; } }我們通過判斷倆次點擊時間間隔去判定當前點擊操作是否為有效操作。那么如何在使用中調用呢?繼續往下看。。。
gv_isf.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { if (!ButtonUtils.isFastDoubleClick(R.id.gv_integralstore)) { //寫你相關操作即可 } } });!ButtonUtils.isFastDoubleClick(R.id.gv_integralstore):這塊是關鍵。我的想法就是在單擊事件中進行判斷,看看當前的點擊事件是否為有效點擊事件
好了,一個簡單又實用的防止按鈕多次重復點擊的工具類就搞定了。。。
以上這篇Android之有效防止按鈕多次重復點擊的方法(必看篇)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。
新聞熱點
疑難解答