Hyena.jpg
像AndroidUtilCode这样优秀的库替我管理了工具类,大大提高了我工作的效率,现在工具类终于解放了双手,这得益于AndroidUtilCode,每当构建新项目,只需要一行代码就可以把需要的工具类引用进来,而且这个库还保持着活跃的更新,更多的人在参与进去,开源的力量让AndroidUtilCode变得愈加强大,也使更多的android开发者收益,再次感谢。
Hyena鬣狗快速开发库也是借鉴了前辈的思路,想成为一个简单好用,保持活力,受大家喜欢的开源库。
核心为快速开发,定位小巧精悍,内容简单精致,整合常用的自定义View、Base类、通用、词典
图例是比较常见的需求了
* 点击获得验证码
* 按钮不可点击且进入倒计时
* 时间结束恢复状态。
使用鬣狗就可以很快速方便的实现这个功能,详细的使用示例
获得验证码.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鬣狗快速开发库