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

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

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

瀏覽:3日期: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
相關文章:
主站蜘蛛池模板: 亚洲欧洲一区二区 | 亚洲毛片免费观看 | 亚洲自拍另类 | 手机看片在线播放 | 免费看欧美一级特黄a毛片 免费看片aⅴ免费大片 | 国产毛片久久国产 | 欧美日韩视频一区二区 | 越南高清幻女bbwxxxx | 日韩欧美一区二区三区在线观看 | 国产亚洲午夜精品a一区二区 | 成人国产精品久久久免费 | 久久福利青草狠狠午夜 | 成人亚洲在线观看 | 国产一级aaa全黄毛片 | 欧美在线一区二区三区精品 | 成人免费看黄网址 | 九九色综合 | 日日操干 | 亚洲三级网址 | 精品成人毛片一区二区视 | 欧美成人免费观看的 | 韩国毛片 | 色婷婷久久综合中文久久蜜桃 | 成人看的午夜免费毛片 | 波多野结衣一区二区 | 国产美女精品三级在线观看 | 欧美成人免费在线观看 | 久久久久久久岛国免费观看 | 国产欧美视频一区二区三区 | 国内精品a | 日韩欧美亚洲中字幕在线播放 | 国产精品久久久久久一区二区 | 99爱视频在线 | 九九视频在线看精品 | 久草视频资源 | 欧美亚洲视频一区 | a级成人毛片免费视频高清 a级高清观看视频在线看 | 亚洲毛片免费视频 | 亚洲高清视频免费 | 啪啪一级视频 | 人成免费a级毛片 |