前几天在做一个倒计时显示的时候发现了这个类,用起来非常方便翻看了下源代码。内部已经帮我们实现了handler的子线程操作,CountDownTimer这个类用起来非常easy。两个參数。几句代码搞定,例如以下
CountDownTimer(long millisInFuture, long countDownInterval)
构造函数有两个參数,第一个millisInFuture是指要倒计时的总时间,单位是long ms。第二个參数countDownInterval是指倒计时的频率,是一次倒计时1s 还是一次倒计时2s
知道这两个參数的意思那就非常好办了,new一个CountDownTimer对象就会生成两个回调函数
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
}
第一个方法 就是在倒计时的时候调用的,每倒计时一次要进行什么操作。就能够放在这里面做。通常是对UI线程进行一些操作。比方对文本进行更改,达到倒计时的效果,
第二个方法是倒计时完毕后调用。倒计时完毕须要进行什么操作都能够写在里面。
当然,最后一定要记得start() 否则线程不会開始
所有代码:
public class MainActivity extends Activity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
/** 倒计时60秒,一次1秒 */
CountDownTimer timer = new CountDownTimer(60*1000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
tv.setText("还剩"+millisUntilFinished/1000+"秒");
}
@Override
public void onFinish() {
tv.setText("倒计时完毕了");
}
}.start();
}
}