手机直播源码,验证码自动读秒倒计时

手机直播源码,验证码自动读秒倒计时实现的相关代码

一、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()方法,以防止内存泄漏和出现如空指针等异常。

以上就是 手机直播源码,验证码自动读秒倒计时实现的相关代码,更多内容欢迎关注之后的文章

 

posted @ 2022-03-08 14:12  云豹科技-苏凌霄  阅读(201)  评论(0)    收藏  举报