用countdowntimer實現60秒倒計時獲取驗證碼
阿新 • • 發佈:2018-11-05
博主android新手,有什麼不足求輕噴。
下面看下我的程式碼先
private void countDown() { timer = new CountDownTimer(60900, 1000) { @Override public void onTick(long millisUntilFinished) { Message msg = Message.obtain(); msg.arg1 = (int)millisUntilFinished/1000 -1; msg.what = 10; handler.sendMessage(msg); } @Override public void onFinish() { timer.cancel(); } }.start(); }
記得按鈕設定為不可點選。
上面是我倒計時的主要方法,因為CountDownTimer中取到的millisUntilFinished有偏差還有倒計時不到0,所以對CountDownTimer的第一個引數進行了處理。
處理的方法我參考了博主濤聲依舊Cjt的微博:http://blog.csdn.net/u010898329/article/details/75005814
然後通過handler把時間傳遞出去,然後做判斷
最主要的是最後的當時間返回0時,要新增timer.cancel();還有timer=null;
因為當返回的時間為0時,onfinish()方法不會馬上執行(大概延遲1或2秒執行),而獲取驗證的按鈕在為0是又處於可點選狀態,所以如果在時間返回0時候馬上就點選獲取驗證碼,會重新倒計時,但是1或2秒後會執行上一個timer的onfinish()裡面的timer.cancel()方法,所以第二個的timer會被取消掉,出現倒計時停在59秒或58秒的情況。
好以上就是我的倒計時的內容,第一次寫,有什麼不足還請大家指教,如果上面的程式碼有什麼問題還請指出,共同討論共同進步,謝謝