第一种:使用倒计时类
/**
* Android中的倒计时类, 此类使用了异步倒计时
* 在子线程中进行时间的计算, 然后通知主线程, 进行处理倒计时
*/
CountDownTimer time = new CountDownTimer(60000,1000) {
@Override
public void onTick(long millisUntilFinished) {
int s = (int) (millisUntilFinished/1000);
getCode.setText(s+"s");
}
@Override
public void onFinish() {
getCode.setText("获取验证码");
getCode.setClickable(true);
getCode.setTextColor(Color.parseColor("#000000"));
}
};
time.start();
第二种:使用AsyncTask实现倒计时
new AsyncTask<Void, Integer, Void>(){
//初始化操作
@Override
protected void onPreExecute() {
super.onPreExecute();
mBtnCountNum.setClickable(false);
mBtnCountNum.setBackgroundColor(Color.parseColor("#bc3131"));
}
@Override
protected Void doInBackground(Void... params) {
for (int i =60; i >=0; i--) {
publishProgress(666,i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return null;
}
/**
* 主线程中的方法
*/
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
mBtnCountNum.setText(values[1]+"s");
if(values[1]==0){
mBtnCountNum.setText("获取验证码");
mBtnCountNum.setClickable(true);
mBtnCountNum.setBackgroundColor(Color.parseColor("#ffffff"));
}
}
}.execute();