最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 處理 View 重復(fù)點擊的多種方法

 更新時間:2021年03月19日 08:41:09   作者:louisgeek  
這篇文章主要介紹了Android 處理 View 重復(fù)點擊的多種方法,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下

1、抽象類

//實現(xiàn) View.OnClickListener 接口
public abstract class OnThrottleClickListener implements View.OnClickListener {
  private static final String TAG = "OnThrottleClickListener";
  private static final int SKIP_DURATION = 300;//milliseconds
  private long mLastClickTime;
  @Override
  public void onClick(View v) {
    if (System.currentTimeMillis() - mLastClickTime > SKIP_DURATION) {
      onThrottleClick(v);
      mLastClickTime = System.currentTimeMillis();
    } else {
      Log.e(TAG, "OnThrottleClickListener: 重復(fù)點擊");
    }
  }

  protected abstract void onThrottleClick(View v);
}
//代替 new View.OnClickListener() 使用
id_tv_1.setOnClickListener(new OnThrottleClickListener() {
   @Override
   protected void onThrottleClick(View v) {
    Log.e(TAG, "onClick: OnThrottleClickListener ");
   }
});

2、代理模式

//代理類實現(xiàn) View.OnClickListener 接口
public class ThrottleClickProxy implements View.OnClickListener {
  private static final String TAG = "ThrottleClickProxy";
  private static final int SKIP_DURATION = 300;//milliseconds
  private long mLastClickTime;
  //源對象
  private View.OnClickListener mOriginListener;
	//構(gòu)造
  public ThrottleClickProxy(View.OnClickListener mOriginListener) {
    this.mOriginListener = mOriginListener;
  }
  @Override
  public void onClick(View v) {
    if (System.currentTimeMillis() - mLastClickTime >= SKIP_DURATION) {
      mOriginListener.onClick(v);
      mLastClickTime = System.currentTimeMillis();
    } else {
      Log.e(TAG, "ThrottleClickProxy: 重復(fù)點擊");
    }
  }
}
//使用 
id_tv_2.setOnClickListener(new ThrottleClickProxy(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
        Log.e(TAG, "onClick: ThrottleClickProxy ");
     }
  }));

3、RxAndroid 之 RxBinding

implementation 'com.jakewharton.rxbinding3:rxbinding:3.0.0-alpha1'
 RxView.clicks(id_tv_3)
    .throttleFirst(300, TimeUnit.MILLISECONDS)
    .subscribe(new Consumer<Unit>() {
     @Override
     public void accept(Unit unit) throws Exception {
       Log.e(TAG, "onClick: throttleFirst ");
     }
   });

4、AOP 之 Eclipse AspectJ

//采用 AspectJX 來快速配置 Eclipse AspectJ
//project
dependencies {
    classpath "com.android.tools.build:gradle:4.1.2"
    //add
    classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.10'
}
plugins {
  id 'com.android.application'
  //add
  id 'android-aspectjx'
}
//module
dependencies {
  //add
  implementation 'org.aspectj:aspectjrt:1.9.5'
}
@Aspect
public class ThrottleClickAspect {
  private static final String TAG = "ThrottleClickAspect";
  private static final int SKIP_DURATION = 3000;
  private long mLastClickTime;

  //所有的 android.view.View.OnClickListener.onClick 方法都會被織入,像第三方組件 RxView.clicks() 里也會
  @Around("execution(* android.view.View.OnClickListener.onClick(..))")
  public void aroundViewOnClick(ProceedingJoinPoint joinPoint) throws Throwable {
    if (System.currentTimeMillis() - mLastClickTime >= SKIP_DURATION) {
      joinPoint.proceed();
      mLastClickTime = System.currentTimeMillis();
    } else {
      Log.e(TAG, "ThrottleClickAspect: 重復(fù)點擊");
    }
  }
}

代碼無侵入方式,直接生效了

以上就是Android 處理 View 重復(fù)點擊的多種方法的詳細內(nèi)容,更多關(guān)于Android 處理 View 重復(fù)點擊的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android5.0之Activity的轉(zhuǎn)場動畫的示例

    Android5.0之Activity的轉(zhuǎn)場動畫的示例

    本篇文章主要介紹了Android5.0之Activity的轉(zhuǎn)場動畫的示例,非常具有實用價值,需要的朋友可以參考下
    2017-10-10
  • RxJava入門之介紹與基本運用

    RxJava入門之介紹與基本運用

    對于Android開發(fā)者來說,當(dāng)有一天打開技術(shù)論壇、博客滿屏都是各種Rx的時候,心里是很慌的。所以趁著現(xiàn)在跟著小編通過這篇文章先來簡單認識下RxJava,以及RxJava的基本運用。對這感興趣的朋友下面來一起看看吧。
    2016-09-09
  • Kotlin自定義菜單控件

    Kotlin自定義菜單控件

    這篇文章主要為大家詳細介紹了Kotlin自定義菜單控件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Android巧用DecorView實現(xiàn)對話框功能

    Android巧用DecorView實現(xiàn)對話框功能

    本篇文章主要介紹了Android巧用DecorView實現(xiàn)對話框功能,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Android編程實現(xiàn)獲取當(dāng)前系統(tǒng)語言及地區(qū)并更改語言的方法

    Android編程實現(xiàn)獲取當(dāng)前系統(tǒng)語言及地區(qū)并更改語言的方法

    這篇文章主要介紹了Android編程實現(xiàn)獲取當(dāng)前系統(tǒng)語言及地區(qū)并更改語言的方法,涉及Android針對系統(tǒng)語言及地區(qū)的獲取與設(shè)置相關(guān)操作技巧,需要的朋友可以參考下
    2017-10-10
  • Room Kotlin API的使用入門教程

    Room Kotlin API的使用入門教程

    這篇文章主要介紹了Room Kotlin API使用入門教程,幫助大家更好的理解和學(xué)習(xí)使用并且測試 Room Kotlin API,感興趣的朋友可以了解下
    2021-04-04
  • Android實現(xiàn)未讀消息小紅點顯示實例

    Android實現(xiàn)未讀消息小紅點顯示實例

    大家好,本篇文章主要講的是Android實現(xiàn)未讀消息小紅點顯示實例,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Android 判斷是否連接成功了指定wifi

    Android 判斷是否連接成功了指定wifi

    本文主要介紹了Android 判斷是否連接成功了指定wifi的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • Android編程實現(xiàn)自定義Tab選項卡功能示例

    Android編程實現(xiàn)自定義Tab選項卡功能示例

    這篇文章主要介紹了Android編程實現(xiàn)自定義Tab選項卡功能,結(jié)合完整實例形式分析了Android自定義tab選項卡的遍歷、設(shè)置及屬性操作相關(guān)技巧,需要的朋友可以參考下
    2017-02-02
  • 解決MySQL忘記密碼問題的方法

    解決MySQL忘記密碼問題的方法

    這篇文章主要為大家分享了一種解決MySQL忘記密碼問題的方法,MySQL忘記密碼怎么辦,不用著急,小編為大家解答,感興趣的小伙伴們可以參考一下
    2016-03-03

最新評論

新晃| 潼关县| 海口市| 昌平区| 磴口县| 偏关县| 五寨县| 改则县| 桑日县| 醴陵市| 湖北省| 长子县| 泽州县| 东源县| 瑞安市| 凉城县| 琼海市| 乌拉特中旗| 庆云县| 内丘县| 三门峡市| 上犹县| 基隆市| 英山县| 太仓市| 陇西县| 阜南县| 赫章县| 阜新市| 十堰市| 贵德县| 交口县| 襄城县| 旬阳县| 青田县| 民勤县| 永新县| 涟源市| 黄陵县| 台湾省| 修水县|