一、使用步驟
1、在module中引入
implementation?'com.tgcity.widget:VerificationCode:1.0.0' 或?implementation?'com.tgcity.widget:VerificationCode:latest.release'
2、在您項目對應(yīng)的xml文件中引入控件
因為VerificationCodeView是繼承AppCompatTextView肉瓦,所以您可以當(dāng)成AppCompatTextView來使用,可以正常設(shè)置字體大小,控件寬高娇钱、內(nèi)間距等。
<com.tgcity.smsdemo.VerificationCodeView
android:id="@+id/verificationCode"
android:layout_width="120dp"? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????
android:layout_height="40dp"? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????
android:background="#fff"? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????
android:gravity="center"? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????
app:vc_click_col="#ff00"? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????
app:vc_click_msg="s重發(fā)"? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????
app:vc_duration="10"? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????
app:vc_un_click_col="#ff0"? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????
app:vc_un_click_msg="發(fā)送驗證碼" />
3绊困、代碼使用
//初始化對象? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
VerificationCodeView verificationCode = findViewById(R.id.verificationCode);? ? ? ? ? ?
//設(shè)置總時間? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
verificationCode.setDuration(60);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
//開始倒計時? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
verificationCode.startCountdown();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
//設(shè)置回調(diào)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
verificationCode.setListener(new VerificationCodeView.CountdownInterface() {? ? ? ? ? ? ?????
@Override public void onCountdownFinish() {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?//處理完成業(yè)務(wù)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
}});
二文搂、源碼分析
1、實現(xiàn)的具體需求如下: ①秤朗、默認(rèn)文案是“發(fā)送驗證碼” 默認(rèn)顏色藍(lán)色煤蹭;②、發(fā)送過程中的文案“xxs后重新發(fā)送” 字體顏色 666取视;③硝皂、開放 獲取組件狀態(tài)方法;④作谭、開放 設(shè)置初始倒計時時長方法吧彪; ⑤、開放 倒計時結(jié)束后的回調(diào)接口丢早;? ⑥姨裸、開放 結(jié)束倒計時的方法秧倾;⑦、結(jié)束后文案和字體初始化
2傀缩、CountDownTimer類源于系統(tǒng)的android.os.CountDownTimer文件那先,此處將mMillisInFuture針對對象進行變量處理,為了保證用戶可以自由設(shè)置倒計時總時間
3赡艰、針對attrs下的屬性進行說明:①vc_un_click_msg:初始化的文案售淡;②vc_un_click_col:初始化的顏色;③vc_click_msg:倒計時的文案慷垮;④vc_click_col:倒計時的顏色揖闸;⑤vc_duration:倒計時的時長
4、針對總時間“+100”進行說明料身,主要是在測試過程中發(fā)現(xiàn)倒計時的時間間隔并非嚴(yán)格意義的1000ms汤纸,而在毫秒轉(zhuǎn)秒的過程中會對其進行取整處理,此時會影響秒數(shù)的正常顯示芹血,故做此處理
三贮泞、瀏覽地址
2幔烛、jcenter依賴引入地址