使用RxJava实现android里面的倒计时效果
学习RxJava已经很久了,一直没有在项目中使用,之前项目需求比较多,一直没有时间去做一些示例,最近抽空复习了下之前的知识,算是对自己知识的一个笔记吧!
使用之前记得加上依赖哦!
compile 'io.reactivex:rxjava:1.2.6'
compile 'io.reactivex:rxandroid:1.2.1'
/**
* 使用RxJava实现倒计时
*/
private void countDown() {
final long count = 30;
Observable.interval(1, TimeUnit.SECONDS)
.take(31)//计时次数
.map(new Func1<Long, Long>() {
@Override
public Long call(Long integer) {
return count - integer;
}
})
.doOnSubscribe(new Action0() {
@Override
public void call() {
cutdown.setEnabled(false);
cutdown.setBackgroundColor(Color.DKGRAY);
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Long>() {
@Override
public void onCompleted() {
cutdown.setEnabled(true);
cutdown.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
cutdown.setText("倒计时");
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Long aLong) {
cutdown.setText("倒计时" + aLong);
}
});
}