下面详细讲解一下“Android使用CountDownTimer模拟短信验证倒计时”的完整攻略。
什么是CountDownTimer
CountDownTimer是一个Android系统提供的一个倒计时辅助类,它是在后台异步操作完成计时任务后,在UI线程上更新UI元素。
步骤
实现模拟短信验证倒计时需要以下步骤:
第一步: 布局文件
在布局文件中添加一个倒计时按钮和一个文本框,示例如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"
android:background="#fff">
<Button
android:id="@+id/verify_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:textColor="#fff"
android:textSize="16sp"
android:text="获取验证码"
android:background="#654321"/>
<EditText
android:id="@+id/et_verification"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/verify_btn"
android:layout_marginTop="10dp"
android:inputType="number"/>
</RelativeLayout>
第二步: 初始化CountDownTimer
在Activity中初始化CountDownTimer,示例如下:
private CountDownTimer mCountDownTimer = new CountDownTimer(60000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
//更新UI,实时显示倒计时
mVerifyBtn.setText(millisUntilFinished / 1000 + "s");
}
@Override
public void onFinish() {
//倒计时结束,重置UI状态
mVerifyBtn.setEnabled(true);
mVerifyBtn.setText("获取验证码");
}
};
第三步: 开始倒计时
在倒计时按钮点击事件中,调用CountDownTimer的start()方法开始倒计时,示例如下:
mVerifyBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mVerifyBtn.setEnabled(false);
mCountDownTimer.start();
}
});
第四步: 校验验证码
在校验验证码的代码中获取用户输入的验证码,进行校验,示例如下:
String verification = mEtVerification.getText().toString().trim();
if (TextUtils.isEmpty(verification)) {
Toast.makeText(this, "请输入验证码", Toast.LENGTH_SHORT).show();
return;
}
示例说明
示例一
在倒计时过程中,如果用户离开当前界面进入其他Activity,CountDownTimer会继续在后台执行,造成资源浪费和数据错乱,此时需要在Activity的onPause()方法中停止倒计时任务,示例如下:
@Override
protected void onPause() {
super.onPause();
mCountDownTimer.cancel(); //停止倒计时任务
}
示例二
在倒计时结束时,如果不重置UI状态,用户无法再次获取验证码,需要在CountDownTimer的onFinish()中重置UI状态,示例如下:
@Override
public void onFinish() {
//倒计时结束,重置UI状态
mVerifyBtn.setEnabled(true);
mVerifyBtn.setText("获取验证码");
}
以上就是“Android使用CountDownTimer模拟短信验证倒计时”的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android使用CountDownTimer模拟短信验证倒计时 - Python技术站