av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

瀏覽:6日期:2022-09-20 14:23:47
1、抽象類(lèi)

//實(shí)現(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ù)點(diǎn)擊'); } } 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、代理模式

//代理類(lèi)實(shí)現(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; //源對(duì)象 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ù)點(diǎn)擊'); } }}

//使用 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 來(lái)快速配置 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 方法都會(huì)被織入,像第三方組件 RxView.clicks() 里也會(huì) @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ù)點(diǎn)擊'); } }}

代碼無(wú)侵入方式,直接生效了

以上就是Android 處理 View 重復(fù)點(diǎn)擊的多種方法的詳細(xì)內(nèi)容,更多關(guān)于Android 處理 View 重復(fù)點(diǎn)擊的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 国产高清在线精品 | 成人午夜影院 | 久久久久久看片 | 亚洲精品黄 | 正在播放国产精品 | 欧美日韩久久 | 日韩欧美三区 | 天天操网 | 丁香综合| 精品91| 国产精品1区 | 精品欧美乱码久久久久久 | 国产极品车模吞精高潮呻吟 | 狠狠撸在线视频 | 一级特黄在线 | 一级黄a视频 | 国产精品久久久久aaaa九色 | 国产成人精品免高潮在线观看 | 亚洲成人免费av | 国产一区二区三区免费 | 国产一区二区精 | 人人人干| www.久草.com | 99久久99| 国产精品久久国产精品 | 国产成人精品一区二区三区视频 | h小视频 | 精品一区二区三区四区五区 | 亚洲一区二区免费 | 欧美在线一区二区视频 | a级黄色片视频 | 久久久久国产精品一区二区 | 亚洲免费观看视频 | 成人精品一区二区三区中文字幕 | 特级丰满少妇一级aaaa爱毛片 | 国产激情片在线观看 | 97色在线视频| 狠狠狠色丁香婷婷综合久久五月 | 亚洲精品欧美一区二区三区 | 91资源在线观看 | 久久精品亚洲欧美日韩久久 |