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

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

一、CountDownTimer类介绍

CountDownTimer类是一个抽象类,需要写一个子类来继承,如:

 

1
class TimeCount extends CountDownTimer {<br> <br>        public TimeCount(long millisInFuture, long countDownInterval) {<br>            super(millisInFuture, countDownInterval);<br>        }<br> <br>        @Override<br>        public void onTick(long millisUntilFinished) {<br>            mSend.setBackgroundColor(Color.parseColor("#B6B6D8"));<br>            mSend.setClickable(false);<br>            mSend.setText(millisUntilFinished / 1000 + " 秒后可重新发送");<br>        }<br> <br>        @Override<br>        public void onFinish() {<br>            mSend.setText("重新获取验证码");<br>            mSend.setClickable(true);<br>            mSend.setBackgroundColor(Color.parseColor("#4EB84A"));<br> <br>        }<br>    }

其中在构造方法中,参数millisInFuture代表设置倒计时的总时间(毫秒),参数countDownInterval代表设置每次减去的时间(毫秒)。onTick()方法是进行倒计时的时候开始运行的,onFinish()方法是倒计时结束之后运行的。

另外,CountDownTimer类还有start()和cancle()两个方法,调用start()方法会开始倒计时,调用cancle()方法取消当前任务。

二、实现倒计时按钮

 

1
    <br>private TimeCount time;<br>private Button mSend;<br>@Override<br>    protected void onCreateView(Bundle savedInstanceState) {<br>        super.onCreateView(savedInstanceState);<br>        setContentView(R.layout.fragment_phone);<br>        mSend = (Button) findViewById(R.id.btn_send);<br>        time = new TimeCount(60000, 1000);<br>        mSend.setOnClickListener(new View.OnClickListener() {<br>            @Override<br>            public void onClick(View v) {<br>                phone = mEtPhone.getText().toString();<br>                if (TextUtils.isEmpty(phone)) {<br>                    CustomToast.showShortError(getApplicationContext(), "请输入账号");<br>                    return;<br>                }<br>                if (!CheckUtil.isPhoneLegal(phone)) {<br>                    CustomToast.showShortError(getApplicationContext(), "手机格式不合法");<br>                    return;<br>                }<br>                //发送请求<br>                LoginHttpClient.getClient().sms(getApplicationContext(), phone, Constants.SMS_TYPE_MESSAGE, mScene, new ResponseListener<ResponseInfo>() {<br>                    @Override<br>                    public void onSuccess(ResponseInfo info) {<br>                        switch (info.errno) {<br>                            case Errno.OK:<br>                                Bundle bundle = new Bundle();<br>                                bundle.putString(Constants.BUNDLE_KEY_PHONE, phone);<br>                                bundle.putInt(Constants.BUNDLE_KEY_SCENE, mScene);<br>                                CustomToast.showShortComplete(getApplicationContext(), "短信验证码已发送");<br>                                //开启倒计时<br>                                time.start();<br>                                break;<br>                            case Errno.ACCOUNT_NOT_EXISTS:<br>                                CustomToast.showShortError(getApplicationContext(), "该用户未注册");<br>                                break;<br>                            default:<br>                                CustomToast.showShortError(getApplicationContext(), info.msg);<br>                                break;<br>                        }<br>                    }<br> <br>                    @Override<br>                    public void onFail(Throwable throwable) {<br>                        CustomToast.showShortError(getApplicationContext(), "请稍后重试");<br>                    }<br>                });<br> <br>            }<br>        });<br> @Override<br>    public void onDestroy() {<br>        time.cancel();<br>        super.onDestroy();<br>    }

 

    当发送请求时调用time.start()方法,开始倒计时60秒,并运行onTick()方法,改变button的样式,60秒倒计时结束的时候调用onFinish()方法。注意:不调用time.start()方法的话是不会开启倒计时的。在销毁activity的时候,调用cancle()方法,以防止内存泄漏和出现如空指针等异常。

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

 

posted @   云豹科技-苏凌霄  阅读(194)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示