注册时手机获取验证码倒计时,使用CountDownTimer类轻松实现倒计时功能

来源:互联网 发布:android系统优化 编辑:程序博客网 时间:2024/06/02 15:02

CountDownTimer由系统提供
查资料的时候 发现了CountDownTimer这个类之后 果断抛弃了以前的倒计时做法

功能:
30秒倒计时 每次间隔1秒

参数:
mc.start();方法开始

mc.cancel();方法结束
new MyCountDownTimer(30000, 1000); 第一个参数表示 总的时间为30000毫秒,间隔1000毫秒

直接上代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
packagecom.example.daojishi;
  
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.os.CountDownTimer;
importandroid.util.Log;
importandroid.view.View;
importandroid.widget.TextView;
importandroid.widget.Toast;
  
/**
 *
 * @author baozi
 *
 * 倒计时的类 CountDownTimer
 *
 */
publicclass MainActivity extendsActivity {
  
  privateMyCountDownTimer mc;
  privateTextView tv;
  
  @Override
  protectedvoid onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tv = (TextView) findViewById(R.id.show);
    mc = newMyCountDownTimer(30000,1000);
    mc.start();
  }
  
  publicvoid oncancel(View view) {
    Toast.makeText(MainActivity.this,"取消", Toast.LENGTH_LONG).show();// toast有显示时间延迟
    mc.cancel();
  }
  
  publicvoid restart(View view) {
    Toast.makeText(MainActivity.this,"重新开始", Toast.LENGTH_LONG).show();// toast有显示时间延迟
    mc.start();
  }
  
  /**
   * 继承 CountDownTimer 防范
   *
   * 重写 父类的方法 onTick() 、 onFinish()
   */
  
  classMyCountDownTimer extendsCountDownTimer {
    /**
     *
     * @param millisInFuture
     *      表示以毫秒为单位 倒计时的总数
     *
     *      例如 millisInFuture=1000 表示1秒
     *
     * @param countDownInterval
     *      表示 间隔 多少微秒 调用一次 onTick 方法
     *
     *      例如: countDownInterval =1000 ; 表示每1000毫秒调用一次onTick()
     *
     */
    publicMyCountDownTimer(longmillisInFuture, longcountDownInterval) {
      super(millisInFuture, countDownInterval);
    }
  
    @Override
    publicvoid onFinish() {
      tv.setText("done");
    }
  
    @Override
    publicvoid onTick(longmillisUntilFinished) {
      Log.i("MainActivity", millisUntilFinished + "");
      tv.setText("倒计时("+ millisUntilFinished / 1000+ ")...");
    }
  }
}
0 0
原创粉丝点击