安卓验证码倒计时的实现

本文介绍了如何在安卓应用中实现验证码倒计时功能,包括构造方法的参数解析,如`millisInFuture`和`countDownInterval`,以及关键的CountDownTimer类的使用,包括`onFinish()`和`onTick()`方法的重写。同时提到了两种不同的XML样式文件用于按钮状态的改变,并给出了实例化和启动倒计时的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

构造方法

public CountDownTimer (long millisInFuture, long countDownInterval)

参数

millisInFuture 从开始调用start()到倒计时完成并onFinish()方法被调用的毫秒数。(译者注:倒计时时间,单位毫秒)

countDownInterval 接收onTick(long)回调的间隔时间。(译者注:单位毫秒)

公共方法如下:

取消倒计时(译者:取消后,再次启动会重新开始倒计时)

 public final void cancel ()

倒计时完成时被调用

  public abstract void onFinish () 

固定间隔被调用

 public abstract void onTick (long millisUntilFinished)

     参数 millisUntilFinished   倒计时剩余时间。

启动倒计时

 public synchronized final CountDownTimer start ()

新建一个类继承CountDownTimer,重写onFinish()以及onTick()方法。

public class MyCountdown extends CountDownTimer {

private Button mButton;

public MyCountdown(Button button, long millisInFuture,
        long countDownInterval) {
    super(millisInFuture, countDownInterval);

    mButton = button;
}

@Override
public void onFinish() {

    // 获取 验证码按钮可点击
    setButtonEnable();

}

@Override
public void onTick(long millisUntilFinished) {
    // 获取验证码按钮不可点击,倒计时开始
    setButtonUnEnable(millisUntilFinished);

}


@SuppressWarnings("deprecation")
private void setButtonEnable() {

    mButton.setEnabled(true);
    mButton.setText("重新获取");
    mButton.setBackgroundDrawable(MyApplication.getInstance()
            .getResources().getDrawable(R.drawable.shape_button_red));

}

@SuppressWarnings("deprecation")
public void setButtonUnEnable(long millisUntilFinished) {
    mButton.setEnabled(false);
    mButton.setText("重新获取(" + millisUntilFinished / 1000 + ")秒");
    mButton.setBackgroundDrawable(MyApplication.getInstance()
            .getResources().getDrawable(R.drawable.shape_button_gray));
}
 }

用到两个样式xml。

shapebuttonred.xml

  <?xml version="1.0" encoding="utf-8"?>
  <shape xmlns:android="http://schemas.android.com/apk/res/android" >  

  <corners android:radius="3.0dip" />  

<solid android:color="@color/ycode"></solid>

 </shape>  

shapebuttongray.xml

<?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android" >

<corners android:radius="3.0dip" />  
<solid android:color="@color/gary" />  

</shape>

调用:

1.先声明

 private MyCountdown mCounter;

2.实例化并start

mCounter = new MyCountdown(btn_reg_getcode, 60000, 1000);
mCounter.start();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值