1、添加插件库
build.gradle(project):
dependencies {...// AOP 配置插件:https://github.com/HujiangTechnology/gradle_plugin_android_aspectjxclasspath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.10'}allprojects {repositories {...maven { url 'https://jitpack.io' }}}
build.gradle(module):
在app的build.gradle中的最上面添加apply plugin: 'android-aspectjx'dependencies {...// AOP 插件库:https://mvnrepository.com/artifact/org.aspectj/aspectjrtimplementation 'org.aspectj:aspectjrt:1.9.5'}
2、自定义注解类
import com.blankj.utilcode.util.ToastUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;@Aspect
public class ClickFilterHook {private static Long sLastClick = 0L;private static final Long FILTER_TIME = 500L;@Around("execution(* android.view.View.OnClickListener.onClick(..))")public void clickFilterHook(ProceedingJoinPoint joinPoint) {long now = System.currentTimeMillis();if (now - sLastClick >= FILTER_TIME) {sLastClick = now;try {joinPoint.proceed();} catch (Throwable throwable) {throwable.printStackTrace();}} else {ToastUtils.showShort("点太快了");}}}
3、配置完后直接调用原生的点击事件就好了
tv_more.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {...}});
如果你遇到:java.util.zip.ZipException: zip file is empty 这个报错
请看这篇文章:记录一个坑:java.util.zip.ZipException: zip file is empty_OnListener的博客-CSDN博客_java.util.zip.zipexception: