亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android防止按鈕過快點擊造成多次事件的解決方法

 更新時間:2016年07月13日 11:44:42   作者:MrZhang_happy  
這篇文章主要介紹了Android防止按鈕過快點擊造成多次事件的解決方法的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

問題

onClick事件是Android開發(fā)中最常見的事件。比如,一個submitButton,功能是點擊之后會提交一個訂單,
則一般代碼如下,其中submitOrder()函數(shù)會跳轉(zhuǎn)到下一頁進行處理 :

//代碼0 
submitButton.setOnClickListener(new OnClickListener() { 
@Override 
public void onClick(View v) { 
submitOrder(); 
} 
}); 

正常情況下這段代碼是沒什么問題的,但是Android設(shè)備的機型性能等千差萬別,如果碰到比較卡的手機,則有可能出現(xiàn)submitOrder()函數(shù)跳轉(zhuǎn)頁面出現(xiàn)延遲的現(xiàn)象。碰到這種現(xiàn)象,則用戶就很有可能再次點擊一次,從而造成函數(shù)被調(diào)用兩次,出現(xiàn)重復(fù)訂單的BUG。

一般地,碰到這現(xiàn)象,首先就會想到的就是在點擊之后把submitButton設(shè)置為不可點擊:

//代碼1 
submitButton.setClickable(false); 
//或者 
submitButton.setEnabled(false); </code> 

此方法也確實有效,不過如果submitOrder()方法沒有成功,需要再次提交訂單時又需要再重復(fù)把submitButton設(shè)置為可點擊狀態(tài)。如果類似的button比較多時,就顯得比較麻煩、混亂。

方案

自定義一個NoDoubleClickListener,繼承自O(shè)nClickListener:

//代碼2 
public abstract class NoDoubleClickListener implements OnClickListener { 
public static final int MIN_CLICK_DELAY_TIME = 1000; 
private long lastClickTime = 0; 
@Override 
public void onClick(View v) { 
long currentTime = Calendar.getInstance().getTimeInMillis(); 
if (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME) { 
lastClickTime = currentTime; 
onNoDoubleClick(v); 
} 
} 
} 

使用方法—— 給submitButton設(shè)置點擊事件時用NoDoubleClickListener代替OnClickListener,并且實現(xiàn)方法onNoDoubleClick代替onClick即可,像這樣:

<span style="font-size:14px;"> //代碼3 
submitButton.setOnClickListener(new NoDoubleClickListener() { 
@Override 
public void onNoDoubleClick(View v) { 
submitOrder(); 
} 
}); </span> 

原理

很簡單,見代碼……

就是用onNoDoubleClick代替onClick處理具體的操作,在onClick方法中加一個判斷:在接收到點擊事件之后,先判斷一下時間,如果距離上次處理操作不足MIN_CLICK_DELAY_TIME,就忽視——即能防止誤操作的連續(xù)點擊導(dǎo)致重復(fù)事件。

MIN_CLICK_DELAY_TIME可調(diào)。

優(yōu)勢

好處是不用改變原有代碼的邏輯,就只需要兩個替換:NoDoubleClickListener代替OnClickListener,onNoDoubleClick代替onClick。 代碼的結(jié)構(gòu)等都不需要做改變(**對比上面的代碼0跟代碼**3),不需要關(guān)心處理更改button的狀態(tài)這些額外判斷邏輯,只需要關(guān)注業(yè)務(wù)邏輯即可,簡潔優(yōu)雅~

相關(guān)文章

  • Android UI控件之ListView實現(xiàn)圓角效果

    Android UI控件之ListView實現(xiàn)圓角效果

    這篇文章主要為大家詳細介紹了Android UI控件之ListView實現(xiàn)圓角效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 詳解Android 華為凹口屏適配小結(jié)

    詳解Android 華為凹口屏適配小結(jié)

    這篇文章主要介紹了Android 華為凹口屏適配小結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • Android添加圖片到ListView或者RecyclerView顯示

    Android添加圖片到ListView或者RecyclerView顯示

    這篇文章主要介紹了Android添加圖片到ListView或者RecyclerView顯示的相關(guān)資料,需要的朋友可以參考下
    2016-08-08
  • Android程序開發(fā)中單選按鈕(RadioGroup)的使用詳解

    Android程序開發(fā)中單選按鈕(RadioGroup)的使用詳解

    在android程序開發(fā)中,無論是單選按鈕還是多選按鈕都非常的常見,接下來通過本文給大家介紹Android程序開發(fā)中單選按鈕(RadioGroup)的使用,需要的朋友參考下吧
    2016-03-03
  • 最新評論