文章目录
点击事件防止抖动:
RxView.clicks(bar_btn_text_live)
.throttleFirst(windowDuration,TimeUnit.SECONDS)
.subscribe(new Consumer<Object>() {
@Override
public void accept(Object o) throws Exception {
if (SPUtils.ReadInt(LiveActivity.this, "message", "message") == 100) {
PreLiveToast.getINSTANCE().initSinglePreLiveToast(LiveActivity.this,"管理员关闭了讨论区");
}else {
if (fl_emotionview_main.getVisibility()==View.GONE){
fl_emotionview_main.setVisibility(View.VISIBLE);
}
inputMsgDialog();
}
}
});
表单验证(账号密码同时验证)
Observable.combineLatest(RxTextView.textChanges(editName).map(new Function<CharSequence, String>() {
@Override
public String apply(CharSequence charSequence) throws Exception {
return String.valueOf(charSequence.toString());
}
}), RxTextView.textChanges(editPwd).map(new Function<CharSequence, String>() {
@Override
public String apply(CharSequence charSequence) throws Exception {
return String.valueOf(charSequence);
}
}), new BiFunction<String, String, Boolean>() {
@Override
public Boolean apply(String s, String s2) {
return isNameValid(s)&&isPwdValid(s2);
}
}).subscribe(new Consumer<Boolean>() {
@Override
public void accept(Boolean aBoolean) throws Exception {
if (aBoolean){
btn1.setEnabled(true);
RxView.clicks(btn1).subscribe(new Consumer<Object>() {
@Override
public void accept(Object o) {
showToast("Login Success");
}
});
}else {
showToast("Login Fail");
}
}
});
倒计时获取验证码
verifyCodeObservable=RxView.clicks(btnGetCode)
.throttleFirst(SECOND,TimeUnit.SECONDS)
.subscribeOn(AndroidSchedulers.mainThread())
.doOnNext(new Consumer<Object>() {
@Override
public void accept(Object o) {
try {
RxView.enabled(btnLogin).accept(false);
} catch (Exception e) {
e.printStackTrace();
}
}
});
verifyCodeObservable.subscribe(new Consumer() {
@Override
public void accept(Object o) throws Exception {
Observable.interval(1,TimeUnit.SECONDS,AndroidSchedulers.mainThread())
.take(20)
.subscribe(new Observer<Long>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Long value) {
try {
RxTextView.text(btnGetCode).accept("剩余 "+(SECOND-value)+"秒" );
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
try {
RxTextView.text(btnGetCode).accept("再次获取验证码");
RxView.enabled(btnLogin).accept(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
});
}
private Toast mToast;
protected void showToast(String desc) {
if (mToast == null) {
mToast = Toast.makeText(this.getApplicationContext(), desc, Toast.LENGTH_SHORT);
} else {
mToast.setText(desc);
}
mToast.show();
}
@Override
protected void onDestroy() {
super.onDestroy();
verifyCodeObservable.unsubscribeOn(AndroidSchedulers.mainThread());
}
}