Android-防止使用者快速點選和多點觸控
阿新 • • 發佈:2019-01-04
1.為什麼要防止使用者重複點選
在使用者使用App的時候,並不會乖乖的按照我們的想法而執行。
下面就拿我們熟悉的Button來:
舉個栗子假設這個Button的點選事件是“一個登入的網路請求”,這時候我們的主角-老司機小明登場了,他嫻熟的輸入了自己的賬號和密碼,然後點選了登入,靜靜地等候著APP的反饋跳轉,可是天有不測風雲,這時候網路不是很好,APP一直還未反饋 。我們的老司機也是一個暴脾氣,抓著APP的那個小Button一頓亂點。欺負完Button以後,網路好了,然後無數個網路請求被髮出去了,瞬間爆炸(當然你也可以優化網路請求,這裡只是舉個類似的例子)。
2.如何防止重複點選
方法1.遮蔽Button的點選事件
步驟一:在Button的點選事件裡面
btn.setClickable(false);//設定button不可以點選
步驟二:在網路請求完成的時候(請求獲得資料或者請求失敗,請求取消等操作)
btn.setClickable(true);//設定button可以點選
方法2.新增標誌位判斷是否執行Button內的標誌位
原理:每次點選button的時候,獲取當前的時間,然後對比上一次的時間,兩者的差值如果小於某個規定的時間,則判斷為快速點選。
/** * 判斷使用者是否快速點選多次 */ private static long lastClickTime = 0; private static final longSPACE_TIME = 1000;//時間間隔 public static boolean isFastClick() { //當前系統時間 long currentTime = System.currentTimeMillis(); boolean isAllowClick;//是否允許點選 if (currentTime - lastClickTime > SPACE_TIME) { isAllowClick = false; } else { isAllowClick = true; } lastClickTime = currentTime;return isAllowClick; }