最近的项目中总是用到计时发送验证码的按钮,虽然很容易实现,但是一遍遍写handler也是挺麻烦的,所以打算封装一下造个轮子,方便以后使用;
对于封装这个控件,我的想法是首先从需求出发,我需要一个计时控件,如何实现该功能,需要什么样的功能出发的,下面开始;
1,我使用handler发送消息的方式来实现计时;
2,提供了正序和逆序的计时方式;
3,提供了计时时长的设置;
4,提供了每一秒的回调和计时开始,计时结束的回调(已经封装了onclickListener)
下面看代码,代码中我都写了很详细的注释了很容易看懂。
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;
import java.util.Timer;
import java.util.TimerTask;
/**
* 项目中经常遇到短信验证等计时的button,特此封装一个timerButton类
* 1-provide duration setting
* -提供计时时长设置
* 2-provide forward and reverse timing mode,default reverse mode;
* -提供正序和逆序计时,默认逆序倒数计时
* 3-provide timing start callback,it receive a variable of boolean type to decide whether response onClick event this time;
* -提供计时开始回调,接收布尔值,return true则点击开始计时;return false则不开始,用于一些场景业务逻辑的判断需要,比如两次输入密码是否一致后发送验证码
* 4-provide timing finish callback
* -提供计时完成回调onTimeFinish
* 5-provide every second callback
* -提供每一秒计时回调onEverySecond
* 6-provide public method to control start and cancel
* -提供开始计时和结束计时方法
* How to use
* -1,setTimerDuration;2,.autoMode() or .manusalMode();3,setOnEverySecondeLIstener;
* -使用方法:1,setTimerDuration;2,autoMode(自动或手动)