一、使用步骤
1、在module中引入
implementation 'com.tgcity.widget:VerificationCode:1.0.0' 或 implementation 'com.tgcity.widget:VerificationCode:latest.release'
2、在您项目对应的xml文件中引入控件
因为VerificationCodeView是继承AppCompatTextView,所以您可以当成AppCompatTextView来使用,可以正常设置字体大小,控件宽高、内间距等。
<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重发"
app:vc_duration="10"
app:vc_un_click_col="#ff0"
app:vc_un_click_msg="发送验证码" />
3、代码使用
//初始化对象
VerificationCodeView verificationCode = findViewById(R.id.verificationCode);
//设置总时间
verificationCode.setDuration(60);
//开始倒计时
verificationCode.startCountdown();
//设置回调
verificationCode.setListener(new VerificationCodeView.CountdownInterface() {
@Override public void onCountdownFinish() {
//处理完成业务
}});
二、源码分析
1、实现的具体需求如下: ①、默认文案是“发送验证码” 默认颜色蓝色;②、发送过程中的文案“xxs后重新发送” 字体颜色 666;③、开放 获取组件状态方法;④、开放 设置初始倒计时时长方法; ⑤、开放 倒计时结束后的回调接口; ⑥、开放 结束倒计时的方法;⑦、结束后文案和字体初始化
2、CountDownTimer类源于系统的android.os.CountDownTimer文件,此处将mMillisInFuture针对对象进行变量处理,为了保证用户可以自由设置倒计时总时间
3、针对attrs下的属性进行说明:①vc_un_click_msg:初始化的文案;②vc_un_click_col:初始化的颜色;③vc_click_msg:倒计时的文案;④vc_click_col:倒计时的颜色;⑤vc_duration:倒计时的时长
4、针对总时间“+100”进行说明,主要是在测试过程中发现倒计时的时间间隔并非严格意义的1000ms,而在毫秒转秒的过程中会对其进行取整处理,此时会影响秒数的正常显示,故做此处理