java按钮倒计时_Hyena-倒计时按钮
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鬣狗快速開發庫
總結
以上是生活随笔為你收集整理的java按钮倒计时_Hyena-倒计时按钮的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在vue中实现使用webscoket进行
- 下一篇: c51汇编语言典型例子详解,51单片机典