注册 更改密码 或者 快捷登录的时候 都会有获取验证码的情况
会存在在btn上实现倒计时的操作
以前总是自己开子线程递减 然后传回主线程修改UI控件
最近发现一个简单的实现方法
如下 主要粘贴核心代码:
/*获取验证码*/ @Bind(R.id.btn_getcode) Button btnGetnum;
@OnClick({R.id.btn_getcode, R.id.btn_submit,R.id.iv_goback}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.btn_getcode: if("".equals(etPhone.getText().toString().trim())){ MyToast.showShort(FindPwdActivity.this,"手机号不能为空!"); }else if(AccountValidatorUtil.isMobile(etPhone.getText().toString().trim())==false){ MyToast.showShort(FindPwdActivity.this,"手机号不合法!"); }else{ /*执行倒计时 去触发后台的发送验证码*/ //new倒计时对象,总共的时间,每隔多少秒更新一次时间 myCountDownTimer = new MyCountDownTimer(60000,1000); myCountDownTimer.start(); //去服务器触发验证码
复写倒计时MyCountDownTimer类
//复写倒计时 private class MyCountDownTimer extends CountDownTimer { public MyCountDownTimer(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); } //计时过程 @Override public void onTick(long l) { //防止计时过程中重复点击 btnGetnum.setClickable(false); btnGetnum.setText(l/1000+"s"); } //计时完毕的方法 @Override public void onFinish() { //重新给Button设置文字 btnGetnum.setText("重新获取"); //设置可点击 btnGetnum.setClickable(true); } }以上为核心代码 实现简单