1. 程式人生 > >Android-防止使用者快速點選和多點觸控

Android-防止使用者快速點選和多點觸控

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 long 
SPACE_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; }