CountDownTimer倒計(jì)時(shí)
- 定義一個(gè)倒計(jì)時(shí)的值和間隔
private static final long MILLIS_IN_FUTURE = 60000;
private static final long COUNT_DOWN_INTERVAL = 1000;
- 定義一個(gè)
TimeCount類繼承CountDownTimer
private class TimeCount extends CountDownTimer {
TimeCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onTick(long millisUntilFinished) {
if (mTvGetCode != null) {
mTvGetCode.setClickable(false);
String second = millisUntilFinished / 1000 + "秒";
mTvGetCode.setText(second);
}
}
@Override
public void onFinish() {
if (mTvGetCode != null) {
mTvGetCode.setText("獲取驗(yàn)證碼");
mTvGetCode.setClickable(true);
}
}
}
- new TimeCount并在請(qǐng)求接口成功后調(diào)用
start()
timecount = new TimeCount(MILLIS_IN_FUTURE, COUNT_DOWN_INTERVAL);
timecount.start();
- 最后結(jié)束當(dāng)前頁(yè)面時(shí)取消TimeCount
timecount.cancel();
RxAndroid 倒計(jì)時(shí)
private Subscriber<Long> subscriber;
private void Test() {
final int count = 60;
Observable<Long> ob = Observable.interval(1, TimeUnit.SECONDS)
.take(count)
.map(new Func1<Long, Long>() {
@Override
public Long call(Long aLong) {
return count - aLong;
}
}).doOnSubscribe(new Action0() {
@Override
public void call() {
mTvGetCode.setClickable(false);
}
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
subscriber = new Subscriber<Long>() {
@Override
public void onNext(Long aLong) {
if (mTvGetCode != null) {
mTvGetCode.setText(aLong + "秒");
}
}
@Override
public void onCompleted() {
if (mTvGetCode != null) {
mTvGetCode.setText("獲取驗(yàn)證碼");
mTvGetCode.setClickable(true);
}
}
@Override
public void onError(Throwable e) {
}
};
ob.subscribe(subscriber);
}
- 最后結(jié)束當(dāng)前頁(yè)面時(shí)取消訂閱
subscriber.unsubscribe();
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。