今天根據做了一個獲取短信驗證碼倒計時的功能,先上圖看看效果如下:
一開始準用handler來做,但是覺得太麻煩,所以就看了下Android的CountDownTimer倒計時,可以先來看看類說明
主要有兩個方法
onTick()每次間隔指定時間的回調
onFinish();//倒計時結束的回調
爲了能讓自己使用起來不麻煩所以就重新自定義了一下
import android.graphics.Color;
import android.os.CountDownTimer;
import android.widget.TextView;
import com.tanlian.carstaff.R;
/**
* @CreateDate: 2020/4/9
* @Author:lp
* @Description:
*/
public class TimeCount extends CountDownTimer {
private TextView textView;
/**
*
* @param textView 顯示的控件
* @param millisInFuture 總時長
* @param countDownInterval 時間間隔
*/
public TimeCount(TextView textView, long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
this.textView = textView;
}
/**
* 計時過程顯示
* @param millisUntilFinished
*/
@Override
public void onTick(long millisUntilFinished) {
String time = millisUntilFinished / 1000 + "s後重發";
setButtonInfo(time, false);
}
/**
* 計時完畢
*/
@Override
public void onFinish() {
setButtonInfo("獲取驗證碼", true);
}
/**
* 驗證按鈕在點擊前後相關設置
*
* @param content 要顯示的內容
* @param isClick 是否可點擊
*/
private void setButtonInfo(String content, boolean isClick) {
textView.setText(content);
if (isClick) {
textView.setTextColor(Color.parseColor("#FC3D42"));
textView.setBackgroundResource(R.drawable.bg_red_stroke_r11);
} else {
textView.setTextColor(Color.parseColor("#666666"));
textView.setBackgroundResource(R.drawable.bg_e8e8_r13);
}
textView.setClickable(isClick);
}
}
上面的兩個背景圖都是自定義的圓角圖片,這裏就不上傳浪費篇幅了
在activity中的使用
protected void initView() {
TimeCount timeCount = new TimeCount(verificationBtn, 60000, 1000);
verificationBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
timeCount.start();
}
});
}