这里主要利用RxJava来避免重复点击
导入rxjava依赖:
implementation 'com.jakewharton.rxbinding3:rxbinding:3.0.0-alpha2'
如果添加后报如下错误
More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'
请移步到我我上篇博客(点击这里)
java中使用如下:
RxView.clicks(main_btn_two).throttleFirst(1,TimeUnit.SECONDS).subscribe(new Observer<Unit>() {
@Override
public void onSubscribe(Disposable d) {
Log.d("Rx======>","onSubscribe");
}
@Override
public void onNext(Unit unit) {
Log.d("Rx======>","onNext");
startActivity(new Intent(MainActivity.this,OneActivity.class));
}
@Override
public void onError(Throwable e) {
Log.d("Rx======>","onError");
}
@Override
public void onComplete() {
Log.d("Rx======>","onComplete");
}
});
throttleFirst(1,TimeUnit.SECONDS) 方法
- 参数1表示多少秒内的第一次点击有效,这里是1秒
- 参数2表示单位
kotlin中使用:
kotlin中没有RxView,是直接使用 控件名.clicks()
main_btn_two.clicks().throttleFirst(1, TimeUnit.SECONDS).subscribe(object : Observer<Unit> {
override fun onSubscribe(d: Disposable) {
Log.d("Rx======>", "onSubscribe")
}
override fun onNext(unit: Unit) {
Log.d("Rx======>", "onNext")
startActivity(Intent(this@MainActivity, OneActivity::class.java))
}
override fun onError(e: Throwable) {
Log.d("Rx======>", "onError")
}
override fun onComplete() {
Log.d("Rx======>", "onComplete")
}
})