近期在做一个水务项目,又遇到了倒计时验证按钮,这个大家都不陌生吧,几乎所有APP只要遇见登注册、改密码什么的动不动就要验证手机,看来现在真的是离了手机寸步难行啊,以前感觉这都是小问题没大在意,但是现在越来越懒这点代码都不想敲,干脆封装成一个类,以后再遇到,直接拿来用。人总是会越来越懒嘛~~~~哈哈
废话不说了,先看图片:
1.1-》点击之前
1.2-》点击之后
1.3-》60秒倒计时完毕
2.1-》
下边的Button大家肯定再熟悉不过了,一个简单的布局
<Button
android:id="@+id/huo_qu"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_margin="5dp"
android:layout_weight="2"
android:background="@color/HuBlue"
android:text="获取验证码" />
2.2-》首先我们创建一个类,继承
CountDownTimer类。
public class MyCountDownTimer extends CountDownTimer {
private Button bt;//声明一个Button
//构造方法里面添加Button
public MyCountDownTimer(long millisInFuture, long countDownInterval, Button mButton) {
super(millisInFuture, countDownInterval);
this.bt = mButton;
}
@Override
public void onTick(long l) {
bt.setClickable(false);
bt.setText(l / 1000 + "s后重试");//60s后显示变化的内容
bt.setBackgroundResource(R.color.HuiHei);//点击后按钮的颜色
}
@Override
public void onFinish() {
bt.setText("重新获取验证码");//60s显示的文字
//设置可点击
bt.setClickable(true);
bt.setBackgroundResource(R.color.HuBlue);//60s过后按钮恢复的颜色
}
}
2.3-》Activity中的调用
public class RegisterActivity extends BaseActivity {
private Button bt_huoqu;
MyCountDownTimer myCountDownTimer;//声明自定义类
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
bt_huoqu = (Button) findViewById(R.id.huo_qu);
//设置倒计时时间为60s,并传入Button
myCountDownTimer = new MyCountDownTimer(60000, 1000, bt_huoqu);
bt_huoqu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myCountDownTimer.start();//点击按钮开始倒计时
}
});
}
}
好了,到这里就可以看到效果了,根据需求自己改动!