關於Android避免按鈕重復點擊事件


最近測試人員測試我們的APP的時候,喜歡快速點擊某個按鈕,出現一個頁面出現多次,測試人員能不能禁止這樣。我自己點擊了幾下,確實存在這個問題,也感覺用戶體驗不太好。於是乎后來我搜了下加一個方法放在我們Utils類里

// 判斷按鈕是否快速點擊
private static long lastClickTime;
public synchronized static boolean isFastClick() {
long time = System.currentTimeMillis();
if (time - lastClickTime < 500) {
return true;
}
lastClickTime = time;
return false;
}

這樣我就在onclick()方法里加如下代碼

public void onClick(View v) {
    if(Utils.isFastClick){
            return;
     }                
 }

加了之后,的確是禁用了某個界面的的重復點擊,於是我就高興地告訴測試人員我解決了這個問題,他看了之后,也說了沒問題了。但是好景不長,他就又在其他頁面發現可以重復點擊,有特么出現多個頁面了,說最后都不要重復點擊。下班的路上我左思右想,還點擊其他的APP,發現都沒有重復點擊事件。第二天早上我起床的時候,突然冒出一個想法,如果我在父類實現onclicklistener方法 重寫onclick方法,然后寫一個禁止重復點擊的方法,那么子類就應該不會出現重復點擊事件了。於是我google了好久,沒有發現一個比較好的例子,在我們組經驗豐富程序員的幫助下,這里也非常感謝他,呵呵,為此我給了他一個蘋果。最終有了以下的代碼。

禁止重復點擊
    public void avoidDouleClick(View v) {
        clickView = v;
        if (oldId == -1) {
            lastClickTime = SystemClock.elapsedRealtime();
            oldId = v.getId();
            return;
        } else if (v.getId() == oldId) {
            long time = SystemClock.elapsedRealtime();
            if (time - lastClickTime < 500) {
                v.setId(0);
                return;
            }
        } else if (v.getId() == 0) {
            lastClickTime = SystemClock.elapsedRealtime();
            v.setId(oldId);
        }
    }

這個思路其實就是禁止一個button的id連續點擊超過500毫秒,這樣不就避免了重復點擊事件。這樣子Activity重寫onClick()方法,這樣子類就不要再次實現OnClickListener接口了,就能少寫點代碼了。

@Override
    public void onClick(View v) {
        super.onClick(v);
    }

當然,在BaseFragment也要像BaseActivity一樣。這樣就能禁止Actvitity和Fragment的重復點擊事件了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM