手机直播源码,验证码自动读秒倒计时
手机直播源码,验证码自动读秒倒计时实现的相关代码
一、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()方法,以防止内存泄漏和出现如空指针等异常。
以上就是 手机直播源码,验证码自动读秒倒计时实现的相关代码,更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现