码迷,mamicode.com
首页 > 移动开发 > 详细

android学习小例子——验证码倒计时按钮

时间:2016-08-10 19:19:04      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

1.activity_main.xml:

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent" >
 5     <Button
 6         android:id="@+id/btn_time"
 7         android:layout_width="wrap_content"
 8         android:layout_height="wrap_content"
 9         android:text="获取验证码" />
10 </RelativeLayout>

2.MainActivity.java:

 1 public class MainActivity extends Activity {
 2     private Button mTimeButton;
 3     private TimeCount time;
 4     @Override
 5     protected void onCreate(Bundle savedInstanceState) {
 6         super.onCreate(savedInstanceState);
 7         requestWindowFeature(Window.FEATURE_NO_TITLE);
 8         setContentView(R.layout.activity_main);
 9         mTimeButton = (Button) findViewById(R.id.btn_time);
10         time = new TimeCount(60000, 1000);
11         mTimeButton.setOnClickListener(new OnClickListener() {
12             @Override
13             public void onClick(View v) {
14                 time.start();
15             }
16         });
17     }
18     /**
19      * 继承倒计时类
20      * @author 
21      */
22     class TimeCount extends CountDownTimer {
23         /**
24          * 构造方法
25          * @param millisInFuture
26          *            总倒计时长 毫秒
27          * @param countDownInterval
28          *            倒计时间隔
29          */
30         public TimeCount(long millisInFuture, long countDownInterval) {
31             super(millisInFuture, countDownInterval);
32         }
33         @Override
34         public void onTick(long millisUntilFinished) {
35             mTimeButton.setEnabled(false);
36             mTimeButton.setText(millisUntilFinished / 1000 + "秒");//millisUntilFinished 表示当前已完成时间
37         }
38         @Override
39         public void onFinish() {// 计时结束
40             mTimeButton.setEnabled(true);
41             mTimeButton.setText("重新获取");
42         }
43     }
44 }

这里用到了TimeCount类,初始化时传入两个参数millisInFuture和countDownInterval,millisInFuture表示从开始调用start()到倒计时完成并onFinish()方法被调用的毫秒数,即一个周期;countDownInterval表示接收onTick(long)回调的间隔时间。本实例中采用60秒周期,1秒间隔。TimeCount 继承自CountDownTimer 类,覆写了里面的onTick方法,此方法是在计数过程中执行,借用setEnabled方法,将button变成不可点击的状态,同时更新button上显示的时间。覆写的onFinish方法,在计时结束后触发,将button设置成可点击的状态,并将button上的文字变成“重新获取”。

android学习小例子——验证码倒计时按钮

标签:

原文地址:http://www.cnblogs.com/littlewriter/p/5757941.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!