欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 防止多次重復(fù)點(diǎn)擊的三種方法的示例

 更新時(shí)間:2018年03月29日 09:07:12   作者:hust_twj  
本篇文章主要介紹了Android 防止多次重復(fù)點(diǎn)擊的三種方法的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

在項(xiàng)目中經(jīng)常會(huì)遇到對(duì)按鈕、自定義控件的 Item 等防止多次重復(fù)的點(diǎn)擊的問(wèn)題,下面做一個(gè)小結(jié)。

方法1:使用 RxJava 的 throttleFirst()

具體代碼如下:

  /**
   * 防止重復(fù)點(diǎn)擊
   *
   * @param target 目標(biāo)view
   * @param listener 監(jiān)聽(tīng)器
   */
  public static void preventRepeatedClick(final View target, final View.OnClickListener listener) {
    RxView.clicks(target).throttleFirst(1, TimeUnit.SECONDS).subscribe(new Observer<Object>() {
      @Override
      public void onCompleted() {

      }

      @Override
      public void onError(Throwable e) {

      }

      @Override
      public void onNext(Object object) {
        listener.onClick(target);
      }
    });
  }

上述代碼中,利用throttleFirst方法,取1秒內(nèi)的第一次點(diǎn)擊進(jìn)行響應(yīng)。

方法2:利用系統(tǒng)時(shí)間差

  //全局定義
  private long lastClickTime = 0L;
  private static final int FAST_CLICK_DELAY_TIME = 500; // 快速點(diǎn)擊間隔

  //在設(shè)置Item的監(jiān)聽(tīng)時(shí)
  item.setOnItemClickListener(xxx){
    if (System.currentTimeMillis() - lastClickTime < FAST_CLICK_DELAY_TIME){
      return;
    }
    lastClickTime = System.currentTimeMillis();

    //下面進(jìn)行其他操作,比如跳轉(zhuǎn)等
    XXX
  }

該方法主要針對(duì)于自定義控件的點(diǎn)擊。

方法3:工具類(lèi),用于判斷是否快速點(diǎn)擊

該方法與方法2 的原理類(lèi)似:

private static final int MIN_DELAY_TIME= 1000; // 兩次點(diǎn)擊間隔不能少于1000ms
  private static long lastClickTime;

  public static boolean isFastClick() {
    boolean flag = true;
    long currentClickTime = System.currentTimeMillis();
    if ((currentClickTime - lastClickTime) >= MIN_DELAY_TIME) {
      flag = false;
    }
    lastClickTime = currentClickTime;
    return flag;
  }

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論