获取验证码倒计时类简单封装

来源:互联网 发布:mac mini玩游戏怎么样 编辑:程序博客网 时间:2024/06/14 16:22

   今天看到之前获取验证码的倒计时代码,感觉好繁琐啊,于是就在使用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 + ")");    }}


原创粉丝点击