手机直播源码,验证码自动读秒倒计时
手机直播源码,验证码自动读秒倒计时实现的相关代码
一、CountDownTimer类介绍
CountDownTimer类是一个抽象类,需要写一个子类来继承,如:
class TimeCount extends CountDownTimer {
public TimeCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onTick(long millisUntilFinished) {
mSend.setBackgroundColor(Color.parseColor("#B6B6D8"));
mSend.setClickable(false);
mSend.setText(millisUntilFinished / 1000 + " 秒后可重新发送");
}
@Override
public void onFinish() {
mSend.setText("重新获取验证码");
mSend.setClickable(true);
mSend.setBackgroundColor(Color.parseColor("#4EB84A"));
}
}
其中在构造方法中,参数millisInFuture代表设置倒计时的总时间(毫秒),参数countDownInterval代表设置每次减去的时间(毫秒)。onTick()方法是进行倒计时的时候开始运行的,onFinish()方法是倒计时结束之后运行的。
另外,CountDownTimer类还有start()和cancle()两个方法,调用start()方法会开始倒计时,调用cancle()方法取消当前任务。
二、实现倒计时按钮
private TimeCount time;
private Button mSend;
@Override
protected void onCreateView(Bundle savedInstanceState) {
super.onCreateView(savedInstanceState);
setContentView(R.layout.fragment_phone);
mSend = (Button) findViewById(R.id.btn_send);
time = new TimeCount(60000, 1000);
mSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
phone = mEtPhone.getText().toString();
if (TextUtils.isEmpty(phone)) {
CustomToast.showShortError(getApplicationContext(), "请输入账号");
return;
}
if (!CheckUtil.isPhoneLegal(phone)) {
CustomToast.showShortError(getApplicationContext(), "手机格式不合法");
return;
}
//发送请求
LoginHttpClient.getClient().sms(getApplicationContext(), phone, Constants.SMS_TYPE_MESSAGE, mScene, new ResponseListener<ResponseInfo>() {
@Override
public void onSuccess(ResponseInfo info) {
switch (info.errno) {
case Errno.OK:
Bundle bundle = new Bundle();
bundle.putString(Constants.BUNDLE_KEY_PHONE, phone);
bundle.putInt(Constants.BUNDLE_KEY_SCENE, mScene);
CustomToast.showShortComplete(getApplicationContext(), "短信验证码已发送");
//开启倒计时
time.start();
break;
case Errno.ACCOUNT_NOT_EXISTS:
CustomToast.showShortError(getApplicationContext(), "该用户未注册");
break;
default:
CustomToast.showShortError(getApplicationContext(), info.msg);
break;
}
}
@Override
public void onFail(Throwable throwable) {
CustomToast.showShortError(getApplicationContext(), "请稍后重试");
}
});
}
});
@Override
public void onDestroy() {
time.cancel();
super.onDestroy();
}
当发送请求时调用time.start()方法,开始倒计时60秒,并运行onTick()方法,改变button的样式,60秒倒计时结束的时候调用onFinish()方法。注意:不调用time.start()方法的话是不会开启倒计时的。在销毁activity的时候,调用cancle()方法,以防止内存泄漏和出现如空指针等异常。
以上就是 手机直播源码,验证码自动读秒倒计时实现的相关代码,更多内容欢迎关注之后的文章