Android短信驗(yàn)證碼倒計(jì)時(shí)驗(yàn)證的2種常用方式
前言
本文主要介紹的是短信驗(yàn)證碼功能,這里總結(jié)了兩種常用的方式,可以直接拿來(lái)使用。
看圖

計(jì)時(shí)器
說(shuō)明:這里的及時(shí)從10開(kāi)始,是為了演示的時(shí)間不要等太長(zhǎng)而修改的。
方法如下
1、第一種方式:Timer
/**
* Description:自定義Timer
* <p>
* Created by Mjj on 2016/12/4.
*/
public class TimeCount extends CountDownTimer {
private Button button;
//參數(shù)依次為總時(shí)長(zhǎng),和計(jì)時(shí)的時(shí)間間隔
public TimeCount(Button button, long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
this.button = button;
}
//計(jì)時(shí)過(guò)程顯示
@Override
public void onTick(long millisUntilFinished) {
String time = "(" + millisUntilFinished / 1000 + ")秒";
setButtonInfo(time, "#c1c1c1", false);
}
//計(jì)時(shí)完畢時(shí)觸發(fā)
@Override
public void onFinish() {
setButtonInfo("重新獲取", "#f95353", true);
}
/**
* 驗(yàn)證按鈕在點(diǎn)擊前后相關(guān)設(shè)置
*
* @param content 要顯示的內(nèi)容
* @param color 顏色值
* @param isClick 是否可點(diǎn)擊
*/
private void setButtonInfo(String content, String color, boolean isClick) {
button.setText(content);
button.setBackgroundColor(Color.parseColor(color));
button.setClickable(isClick);
}
}
說(shuō)明:根據(jù)自己的需求,在這里修改背景顏色和不同狀態(tài)顯示文字即可,在需要監(jiān)聽(tīng)的按鈕下直接調(diào)用new TimerCount(xxx,xxx,xxx).start()即可。
2、第二種方式:Handler
/**
* 第二種方式:使用Handler
* <p>
* 靜態(tài)內(nèi)部類(lèi):避免內(nèi)存泄漏
*/
private static class MyHandler extends Handler {
private final WeakReference<MainActivity> weakReference;
public MyHandler(MainActivity activity) {
weakReference = new WeakReference<MainActivity>(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)聽(tīng)按鈕下直接調(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();
}
說(shuō)明:此種方式采用的handler實(shí)時(shí)接收消息來(lái)設(shè)置Button的狀態(tài),對(duì)于消息的發(fā)送用的是sendMessage方式,也可以使用post方式。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定幫助,如果有疑問(wèn)大家可以留言交流。
- OpenHarmony實(shí)現(xiàn)類(lèi)Android短信驗(yàn)證碼及倒計(jì)時(shí)流程詳解
- Android自定義短信倒計(jì)時(shí)view流程分析
- Android使用CountDownTimer模擬短信驗(yàn)證倒計(jì)時(shí)
- Android使用Kotlin和RxJava 2.×實(shí)現(xiàn)短信驗(yàn)證碼倒計(jì)時(shí)效果
- Android 用RxBinding與RxJava2實(shí)現(xiàn)短信驗(yàn)證碼倒計(jì)時(shí)功能
- Android實(shí)現(xiàn)發(fā)送短信驗(yàn)證碼倒計(jì)時(shí)功能示例
- Android自定義Chronometer實(shí)現(xiàn)短信驗(yàn)證碼秒表倒計(jì)時(shí)功能
- Android開(kāi)發(fā)之獲取短信驗(yàn)證碼后按鈕背景變化并且出現(xiàn)倒計(jì)時(shí)
- Android封裝實(shí)現(xiàn)短信驗(yàn)證碼的獲取倒計(jì)時(shí)
相關(guān)文章
雙緩沖技術(shù)實(shí)現(xiàn)Android 畫(huà)板應(yīng)用
這篇文章主要介紹了Android 采用雙緩存技術(shù)實(shí)現(xiàn)畫(huà)板應(yīng)用的相關(guān)資料,并附有代碼實(shí)例,有需要的小伙伴可以參考下2016-07-07
Android實(shí)現(xiàn)獲取聯(lián)系人電話號(hào)碼功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)獲取聯(lián)系人電話號(hào)碼功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
Android 實(shí)現(xiàn)釘釘自動(dòng)打卡功能
這篇文章主要介紹了Android 實(shí)現(xiàn)釘釘自動(dòng)打卡功能的步驟,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下2021-03-03
android10 隱藏SystemUI鎖屏下的多用戶圖標(biāo)的示例代碼
這篇文章主要介紹了android10 隱藏SystemUI鎖屏下的多用戶圖標(biāo),本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
VideoView實(shí)現(xiàn)視頻無(wú)縫連續(xù)播放
這篇文章主要為大家詳細(xì)介紹了VideoView實(shí)現(xiàn)視頻無(wú)縫連續(xù)播放,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
Android實(shí)現(xiàn)啟動(dòng)引導(dǎo)圖
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)啟動(dòng)引導(dǎo)圖,文中示例代碼介紹的非常詳細(xì),具有為大家詳細(xì)一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
Android讀取手機(jī)通訊錄聯(lián)系人到自己項(xiàng)目
這篇文章主要為大家詳細(xì)介紹了Android讀取手機(jī)通訊錄聯(lián)系人到自己項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
詳解Android封裝一個(gè)全局的BaseActivity
這篇文章主要介紹了詳解Android封裝一個(gè)全局的BaseActivity,對(duì)封裝感興趣的同學(xué),可以參考下2021-04-04
從源碼編譯Android系統(tǒng)的Java類(lèi)庫(kù)和JNI動(dòng)態(tài)庫(kù)的方法
這篇文章主要介紹了從源碼編譯Android系統(tǒng)的Java類(lèi)庫(kù)和JNI動(dòng)態(tài)庫(kù)的方法,例子基于Linux系統(tǒng)環(huán)境下來(lái)講,需要的朋友可以參考下2016-02-02

