java按钮倒计时_Hyena-倒计时按钮

27e627c8521f

Hyena.jpg

像AndroidUtilCode这样优秀的库替我管理了工具类,大大提高了我工作的效率,现在工具类终于解放了双手,这得益于AndroidUtilCode,每当构建新项目,只需要一行代码就可以把需要的工具类引用进来,而且这个库还保持着活跃的更新,更多的人在参与进去,开源的力量让AndroidUtilCode变得愈加强大,也使更多的android开发者收益,再次感谢。

Hyena鬣狗快速开发库也是借鉴了前辈的思路,想成为一个简单好用,保持活力,受大家喜欢的开源库。

核心为快速开发,定位小巧精悍,内容简单精致,整合常用的自定义View、Base类、通用、词典

图例是比较常见的需求了

* 点击获得验证码

* 按钮不可点击且进入倒计时

* 时间结束恢复状态。

使用鬣狗就可以很快速方便的实现这个功能,详细的使用示例

27e627c8521f

获得验证码.gif

源码 CountDownButton.java

public class CountDownButton extends AppCompatButton {

//默认总时长

private int mMillisInFutureDefault = 60 * 1000;

//默认计时间隔

private int mCountDownIntervalDefault = 1000;

//系统api 倒计时定时器

private CountDownTimer mCountDownTimer;

//按钮文本

private String mBtnStr;

public CountDownButton(Context context) {

super(context);

}

public CountDownButton(Context context, AttributeSet attrs) {

super(context, attrs);

}

public CountDownButton(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

}

/**

* 开始倒计时(默认总时长、默认计时间隔

*/

public void onStart() {

onStart(mMillisInFutureDefault, mCountDownIntervalDefault);

}

/**

* 开始倒计时(自定义总时长、默认计时间隔

*

* @param millisInFuture 总时长

*/

public void onStart(long millisInFuture) {

onStart(millisInFuture, mCountDownIntervalDefault);

}

/**

* 开始倒计时

*

* @param millisInFuture 总时长

* @param countDownInterval 计时间隔

*/

public void onStart(long millisInFuture, final long countDownInterval) {

//如果在执行倒计时 退出

if (isCountDown()) {

return;

}

//保存当前按钮文字

mBtnStr = getText().toString();

if (countDownInterval == 0) {

throw new UnsupportedOperationException("Exception:0 作为计时间隔是个糟糕的选择");

}

mCountDownTimer = new CountDownTimer(millisInFuture, countDownInterval) {

private String result;

@Override

public void onTick(long millisUntilFinished) {

result = millisUntilFinished / countDownInterval + "";

setText(result);

//设置为不可用

if (isEnabled()) {

setEnabled(false);

}

}

@Override

public void onFinish() {

onFinishCountDown();

}

};

mCountDownTimer.start();

}

/**

* 停止倒计时

*/

public void onStop() {

if (!isCountDown()) {

return;

}

mCountDownTimer.cancel();

onFinishCountDown();

}

/**

* 结束倒计时

*/

private void onFinishCountDown() {

if (TextUtils.isEmpty(mBtnStr)) {

mBtnStr = "";

}

setText(mBtnStr);

mCountDownTimer = null;

setEnabled(true);

}

/**

* 是否在倒计时中

*

* @return true:是 false:否

*/

public boolean isCountDown() {

return mCountDownTimer != null;

}

}

更多功能请前往Github查看,传送门: Hyena鬣狗快速开发库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值