国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Android 處理 View 重復點擊的多種方法

瀏覽:2日期:2022-09-20 14:23:47
1、抽象類

//實現 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: 重復點擊'); } } 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、代理模式

//代理類實現 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;//構造 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: 重復點擊'); } }}

//使用 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//projectdependencies { 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’}//moduledependencies { //add implementation ’org.aspectj:aspectjrt:1.9.5’}

@Aspectpublic 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: 重復點擊'); } }}

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

以上就是Android 處理 View 重復點擊的多種方法的詳細內容,更多關于Android 處理 View 重復點擊的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
主站蜘蛛池模板: 成人网视频免费播放 | 国产精品久久九九 | 欧美高清强视频 | 中文字幕视频免费在线观看 | 一男一女的一级毛片 | 国产三级在线播放线 | 国产下药迷倒白嫩丰满美女j8 | 久久精品国产亚洲片 | 最新国产大片高清视频 | 日本人的色道www免费一区 | 日本一道免费一区二区三区 | 久久免费视频1 | 亚洲欧美日本人成在线观看 | 在线观看国产日本 | 国产男女免费完整视频 | 久久免费看片 | 一级做a爰片久久毛片欧美 一级做a爰片久久毛片人呢 | 亚洲自拍高清 | 亚洲国产欧美在线人成精品一区二区 | 国产20岁美女一级毛片 | 97人摸人人澡人人人超一碰 | 亚欧美图片自偷自拍另类 | 国产成人亚洲精品 | 日韩免费一区二区三区 | 久久91亚洲精品中文字幕 | 久热精品免费视频 | 91精品成人福利在线播放 | 一级做a毛片免费视频 | 免费欧美在线视频 | 91香蕉国产在线观看免费永久 | 欧美性三级 | 欧美色欧 | 国产中文在线视频 | 日本高清福利视频在线观看 | 成人三级做爰在线视频 | 成人a免费α片在线视频网站 | 国产一区二区精品久久凹凸 | 欧美大屁股精品毛片视频 | 久久免费精品国产72精品剧情 | 深夜国产成人福利在线观看女同 | 亚洲综合亚洲 |