本人目前Android小白一枚,目前正在实习,因为在项目中用到的东西过段时间后经常会忘,所以决定在简书记录一下,方便以后查阅。若有说的不对的地方,欢迎各位大佬指正,小弟会虚心学习。
目前公司项目中有好几个用到倒计时的功能就找方法做了一个。
先上效果图:
当点击获取验证码时按钮开始60秒倒计时,当倒计时完成后,按钮变为“重新获取验证码”。
接下来上代码:
先上Button的布局文件
android:id="@+id/get_code"
android:layout_width="100dp"
android:layout_height="35dp"
android:layout_marginRight="15dp"
android:background="@drawable/selector_verify_code" //这个是自定义的背景,就不详细写了
android:padding="10dp"
android:text="获取验证码"
android:textColor="@color/blue"
android:textSize="10dp"/>
Android中提供了一个CountDownTimer 的倒计的类,初始化这个类的时候会重写两个方法,一个是 onTick() ,另一个是onFinish()。第一个方法开始计时的时候调用,可以在里面动态的改变计时的数字,第二个方法在计时完成时调用,可以在里面添加计时完成后需要改变的UI。
在代码中添加倒计时:
CountDownTimer timer =new CountDownTimer (60*1000,1000) {
@Override
public void onTick (long millisUntilFinished) {
button.setEnabled (false);
button.setBackground(getResources().getDrawable(R.drawable.selector_code_get));
button.setText("" + millisUntilFinished /1000);
}
@Override
public void onFinish() {
button.setEnabled(true);
button.setBackground(getResources().getDrawable(R.drawable.selector_verify_code));
button.setText(“重新获取验证码”);
}
}.start();