溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android應用中怎么實現(xiàn)一個驗證碼倒計時功能

發(fā)布時間:2020-12-07 15:31:42 來源:億速云 閱讀:145 作者:Leah 欄目:移動開發(fā)

Android應用中怎么實現(xiàn)一個驗證碼倒計時功能?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

實現(xiàn)

發(fā)送驗證碼的時候一般都會有一個按鈕,點擊之后便會給你輸入的手機發(fā)送一條驗證碼,我這里使用的是一個TextView,顯示特定的數(shù)字,只用設置TextView的點擊事件即可;

Android中有一個類,可以很方便的時候該功能,但是也會存在一個問題,就是在最后一秒的時候,會等待很久才會顯示出“重新發(fā)送”的文字,這個類是CountDownTimer,有興趣的朋友可以去研究下,用起來還是挺方便的,不過我后來發(fā)現(xiàn)重新開啟一個線程來實現(xiàn)是比較完美的。

代碼如下:

  /**
  * 短信驗證碼倒計時
  */
 private void startTimer() {
  registerVerificationCodeTv.setTextColor(getResources().getColor(R.color.text_color_code_green));
  registerVerificationCodeTv.setText(getResources().getString(R.string.timer_default_show));
  registerVerificationCodeTv.setEnabled(false);
  new Thread() {
   @Override
   public void run() {
    for (int i = 59; i >= 0; i--) {
     final int second = i;
     try {
      Thread.sleep(1000);
     } catch (InterruptedException e) {
      e.printStackTrace();
     }
     runOnUiThread(new Runnable() {
      @Override
      public void run() {
       if (second <= 0) {
        registerVerificationCodeTv.setTextColor(getResources().getColor(R.color.text_get_verification_code));
        registerVerificationCodeTv.setText(getResources().getString(R.string.register_re_get_verification_code));
        registerVerificationCodeTv.setEnabled(true);
       } else {
        registerVerificationCodeTv.setTextColor(getResources().getColor(R.color.text_color_code_green));
        registerVerificationCodeTv.setText(second + "s");
       }
      }
     });
    }
   }
  }.start();
 }

說明:

registerVerificationCodeTv就是那個顯示倒計時秒數(shù)的TextView,用的時候只用在registerVerificationCodeTv的點擊事件里面調用此方法就好了。

看完上述內容,你們掌握Android應用中怎么實現(xiàn)一個驗證碼倒計時功能的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI