這篇文章主要介紹了Android中如何實現(xiàn)倒計時驗證,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了陽谷免費建站歡迎大家使用!
短信驗證碼功能,這里總結(jié)了兩種常用的方式,可以直接拿來使用。看圖:
說明:這里的及時從10開始,是為了演示的時間不要等太長而修改的。
1、第一種方式:Timer
/** * Description:自定義Timer ** Created by Mjj on 2016/12/4. */ public class TimeCount extends CountDownTimer { private Button button; //參數(shù)依次為總時長,和計時的時間間隔 public TimeCount(Button button, long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); this.button = button; } //計時過程顯示 @Override public void onTick(long millisUntilFinished) { String time = "(" + millisUntilFinished / 1000 + ")秒"; setButtonInfo(time, "#c1c1c1", false); } //計時完畢時觸發(fā) @Override public void onFinish() { setButtonInfo("重新獲取", "#f95353", true); } /** * 驗證按鈕在點擊前后相關(guān)設(shè)置 * * @param content 要顯示的內(nèi)容 * @param color 顏色值 * @param isClick 是否可點擊 */ private void setButtonInfo(String content, String color, boolean isClick) { button.setText(content); button.setBackgroundColor(Color.parseColor(color)); button.setClickable(isClick); } }
說明:根據(jù)自己的需求,在這里修改背景顏色和不同狀態(tài)顯示文字即可,在需要監(jiān)聽的按鈕下直接調(diào)用new TimerCount(xxx,xxx,xxx).start()即可。
2、第二種方式:Handler
/** * 第二種方式:使用Handler ** 靜態(tài)內(nèi)部類:避免內(nèi)存泄漏 */ private static class MyHandler extends Handler { private final WeakReference
weakReference; public MyHandler(MainActivity activity) { weakReference = new WeakReference (activity); } @Override public void handleMessage(Message msg) { super.handleMessage(msg); MainActivity activity = weakReference.get(); if (activity != null) { switch (msg.what) { case 0: if (msg.arg1 == 0) { btn2.setText("重新獲取"); btn2.setBackgroundColor(Color.parseColor("#f95353")); btn2.setClickable(true); } else { btn2.setText("(" + msg.arg1 + ")秒"); btn2.setBackgroundColor(Color.parseColor("#c1c1c1")); btn2.setClickable(false); } break; } } } } /** * 監(jiān)聽按鈕下直接調(diào)用即可 */ private void sendMessageClick() { new Thread(new Runnable() { @Override public void run() { for (int i = 59; i >= 0; i--) { Message msg = myHandler.obtainMessage(); msg.arg1 = i; myHandler.sendMessage(msg); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); }
說明:此種方式采用的handler實時接收消息來設(shè)置Button的狀態(tài),對于消息的發(fā)送用的是sendMessage方式,也可以使用post方式。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“Android中如何實現(xiàn)倒計時驗證”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!