獲取驗證碼倒計時類簡單封裝

   今天看到之前獲取驗證碼的倒計時代碼,感覺好繁瑣啊,於是就在使用Chronometer控件的條件下,自己封裝了一個類。

使用的時候直接初始化一個Chronometer 控件,添加點擊事件(在點擊事件中調用TimerClass內的initTimer方法,傳入倒計時時間),新建一個TimerClass就行,

實現效果就是:

獲取驗證碼-------->重新發送(5s)----------->重新發送

import android.content.Context;
import android.util.Log;
import android.view.View;
import android.widget.Chronometer;

/**
 * @類名稱: CLASS
 * @類描述:
 * @創建人:LiuLL
 * @創建時間:2017/7/31 15:42
 * @備註:
 */
public class TimerClass {
    private static final String TAG = "TimerClass";
    private Chronometer mChronometer;
    private View.OnClickListener mListener;

    public TimerClass(View.OnClickListener listener, Chronometer chronometer) {
        this.mChronometer = chronometer;
        this.mListener = listener;
        init();
    }

    /**
     * 初始化控件
     */
    private void init() {
        mChronometer.setText("獲取驗證碼");
        mChronometer.setOnClickListener(mListener);
    }


    /**
     * 開始倒計時
     *
     * @param total
     */
    public void initTimer(long total) {
        mChronometer.setOnClickListener(null);
        final long[] timeLeftInS = {total};
        mChronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
            @Override
            public void onChronometerTick(Chronometer chronometer) {
                if (timeLeftInS[0] <= 0) {
                    Log.e(TAG, "onChronometerTick: stop" + System.currentTimeMillis());
                    mChronometer.stop();
                    mChronometer.setText("重新發送");
                    mChronometer.setOnClickListener(mListener);
                    return;
                }
                timeLeftInS[0]--;
                refreshTimeLeft(timeLeftInS[0]);
            }
        });
        Log.e(TAG, "onChronometerTick: start" + System.currentTimeMillis());
        mChronometer.start();
    }

    /**
     * 刷新倒計時數據
     *
     * @param timeLeftInS
     */
    private void refreshTimeLeft(long timeLeftInS) {
        this.mChronometer.setText("重新發送:(" + timeLeftInS + ")");
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章