Android防止按鈕快速重複點擊

在用戶使用 Android 應用的時候,常常會出現過快且屢次點擊同一按鈕的狀況,一方面這是由於應用或手機當前有些卡頓,另外一方面也多是因爲不少應用並無設置按鈕點擊時的 selector 或者其它按鈕響應方式(例如點擊按鈕時按鈕放大,常見於遊戲),致使用戶誤認爲沒有點擊到當前按鈕,固然,除了相對應的對應用進行優化和設置點擊selector之外,咱們還能夠作一些其它的工做,例如,判斷按鈕的 onClick 事件在規定事件段內只響應一次(在論壇的搜索功能中,咱們常見到每10秒才能夠進行一次搜索的設置,這就在必定程度上減小了無效的網絡訪問量,減輕服務器壓力,APP同理),就以下面代碼所示:服務器

1、全局網絡

    public class Utils {
        // 兩次點擊按鈕之間的點擊間隔不能少於1000毫秒
        private static final int MIN_CLICK_DELAY_TIME = 1000;
        private static long lastClickTime;
     
        public static boolean isFastClick() {
            boolean flag = false;
            long curClickTime = System.currentTimeMillis();
            if ((curClickTime - lastClickTime) >= MIN_CLICK_DELAY_TIME) {
                flag = true;
            }
            lastClickTime = curClickTime;
            return flag;
        }
    }

使用1方法ide

btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (Utils.isFastClick()) {
                    // 進行點擊事件後的邏輯操做
                }
            }

單個按鈕接口寫法優化

    public abstract class OnMultiClickListener implements View.OnClickListener{
        // 兩次點擊按鈕之間的點擊間隔不能少於1000毫秒
        private static final int MIN_CLICK_DELAY_TIME = 1000;
        private static long lastClickTime;
     
        public abstract void onMultiClick(View v);
     
        @Override
        public void onClick(View v) {
            long curClickTime = System.currentTimeMillis();
            if((curClickTime - lastClickTime) >= MIN_CLICK_DELAY_TIME) {
                // 超過點擊間隔後再將lastClickTime重置爲當前點擊時間
                lastClickTime = curClickTime;
                onMultiClick(v);
            }
        }
    }

方法2使用spa

    btn.setOnClickListener(new OnMultiClickListener() {
                @Override
                public void onMultiClick(View v) {
                    // 進行點擊事件後的邏輯操做
                }
            });
相關文章
相關標籤/搜索