安卓開發(fā)經(jīng)常需要用到計時:
啟動頁倒計時,廣告頁倒計時,短信驗證碼倒計時,商品倒計時等等;
目前用到的方法有:
1.Timer 類計時任務(wù)
2.Handler 計時
3.CountDownTimer 倒計時類
4.Chronometer 控件
以上方式各有各的優(yōu)缺點
最常見的可能會導致內(nèi)存泄漏;
現(xiàn)在基于CountDownTimer 封裝一個TextView 可以簡單方便實現(xiàn) 計時、倒計時功能
優(yōu)點:
1.自動處理生命周期,不會發(fā)生內(nèi)存泄漏
2.繼承TextView,直接布局使用,樣式設(shè)置按照TextView設(shè)置即可
3.設(shè)置點擊事件開關(guān),可以實現(xiàn)倒計時期間點擊無效(短信驗證碼)
4.設(shè)置序列化操作開關(guān),關(guān)閉頁面、甚至殺掉app再進倒計時依然正確(短信驗證碼)
5.可倒計時,可正向計時
6.鏈式調(diào)用,方便快捷
GitHub地址:點這里
控件就一個類,復(fù)制出來使用
覺得好用歡迎給個star支持一下
示例:
mCountDownTextView.setNormalText("獲取驗證碼")
.setCountDownText("重新獲取(", ")")
.setCloseKeepCountDown(true)//關(guān)閉頁面保持倒計時開關(guān)
.setCountDownClickable(true)//倒計時期間點擊事件是否生效開關(guān)
.setShowFormatTime(true)//是否格式化時間
.setOnCountDownFinishListener(new CountDownTextView.OnCountDownFinishListener() {
@Override
public void onFinish() {
Toast.makeText(MainActivity.this, "倒計時完畢", Toast.LENGTH_SHORT).show();
}
})
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "短信已發(fā)送", Toast.LENGTH_SHORT).show();
mCountDownTextView.startCountDown(60);
}
});