您的位置:首页 > 移动开发 > Android开发

android登陆获取验证码倒计时功能的实现(CountDownTimer)

2016-01-15 10:32 1021 查看
  最近公司做一个手机商城APP,注册用户时需要用,用户手机号注册账号,现在基本大部分APP注册都是这样了。遇到了就记下来,方便以后再用,毕竟写过的代码久了不写还是会忘记的。

  看了一下官方文档,这个类及其简单,只有四个方法,上面都涉及到了onTick,onFinsh、cancel和start。其中前面两个是抽象方法,所以要重写一下。

          下面是一个小例子:

public class MainActivity extends Activity implements OnClickListener {
private EditText ed_phone;// 手机号
private Button ed_button;// 验证码按钮
private String phone;

private Timecount timecount;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ed_phone = (EditText) findViewById(R.id.ed_phone);
ed_button = (Button) findViewById(R.id.ed_button);
ed_button.setOnClickListener(this);

timecount = new Timecount(60000, 1000);// 构造CountDownTimer对象

}

/**
* 定义倒计时内部类
*/
class Timecount extends CountDownTimer {

public Timecount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);// 参数依次为总时长,和计时的时间间隔
}

@Override
public void onTick(long millisUntilFinished) {
ed_button.setClickable(false);
ed_button.setText(millisUntilFinished / 1000 + "s");
}

@Override
public void onFinish() {
ed_button.setText("重新发送");
ed_button.setClickable(true);
}

}

// 验证手机号是否为空
private void info() {
phone = ed_phone.getText().toString();

if (TextUtils.isEmpty(phone)) {
Toast.makeText(MainActivity.this, "请输入手机号码", Toast.LENGTH_SHORT)
.show();
return;
}

if (!IS_PHONE.matcher(phone).matches()) {
Toast.makeText(MainActivity.this, "请输入正确的手机号", Toast.LENGTH_SHORT)
.show();
return;
}
timecount.start();// 开始倒计时
}

//个人习惯这么写

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.ed_button:

info();

break;

default:
break;
}
}


最终效果图;




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息