獲取驗證碼 倒計時 CountDownTimer

項目中不可避免的要使用倒計時,之前會用之前一直使用Handler + Runnable來實現,但是自從發現CountDownTimer了後,

發現CountDownTimer挺好用

比如要做一個獲取驗證碼的倒計時

新建CountDownTimerUtils 繼承 CountDownTimer

重寫 onTick()

這個是間隔時間內執行比如說設置1s執行一次  那麼就1秒自己調用一次這個方法

onFinsh()

倒計時完成後調用

完整代碼:

public class CountDownTimerUtils extends CountDownTimer {

    private TextView mTextView;

    /**
     * @param millisInFuture    The number of millis in the future from the call
     *                          to {@link #start()} until the countdown is done and {@link #onFinish()}
     *                          is called.
     * @param countDownInterval The interval along the way to receive
     *                          {@link #onTick(long)} callbacks.
     */
    public CountDownTimerUtils(TextView textView, long millisInFuture, long countDownInterval) {
        super(millisInFuture, countDownInterval);
        this.mTextView = textView;
    }

    @Override
    public void onTick(long millisUntilFinished) {
        mTextView.setClickable(false); //設置不可點擊
//        mTextView.setText("已發送( " + millisUntilFinished / 1000 + " )");  //設置倒計時時間
        mTextView.setText("已發送");
        mTextView.setBackgroundResource(R.drawable.shape_gray_solid_gray_stroke_garden); 
//設置按鈕爲灰色,這時是不能點擊的
//        mTextView.setTextColor(Color.WHITE);
    }

    @Override
    public void onFinish() {
//        mTextView.setText("重新獲取驗證碼");
        mTextView.setText("發送驗證碼");
        mTextView.setClickable(true);//重新獲得點擊
        mTextView.setBackgroundResource(R.drawable.shape_gray_stroke_white_stroke_garden);  //還原背景色
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章