最近写一个验证码获取的时候倒计时的功能,其实很简单,但是通过研究源码发现,有一种封装过的,所以本人就分别用三种方式实现倒计时的功能,不为别的,只是为了记录。喜欢的朋友收藏即可,说不定就会用到,好了,废话少说,上代码
第一种:第一种一般人都会,就是new 一个Thread,然后通过Sleep()延时的形式实现,这个地方就不做多的解释,非常简单。
new Thread(){
@Override
public void run() {
if (data > 0) {
data--;
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(data +"S");
}else {
data = 0;
System.out.println("重新获取");
}
}
}.start();
第二种:第二种使用handler的sendMessageDelayed方法实现:
Message msg=handler.obtainMessage(10);
handler.sendMessageDelayed(msg, 1000);
然后:
Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
if(data > 0){
if(msg.what==10){
System.err.println(data + "S");
}
Message message=handler.obtainMessage(10);
handler.sendMessageDelayed(message, 1000);
data--;
}else{
System.err.println("重新获取");
}
};
};
第三种:第三种使用封装的CountDownTimer实现,这种方式最简单,代码实现也最少
new CountDownTimer (60000, 1000) {
public void onTick(long millisUntilFinished) {
btn_yanzhengma.setText(millisUntilFinished / 1000 + "S");
}
public void onFinish() {
btn_yanzhengma.setText("重新获取!");
}
}.start();
第四种:第四种当然就是用到Timer了,
private TimerTask timerTask;
private Timer timer;
private void startTimer() {
timerTask = new TimerTask() {
@Override
public void run() {
Message msg = new Message();
msg.what = 0;
handler.sendMessage(msg);
}
};
timer = new Timer();
timer.schedule(timerTask, 0, 1000);
}
/**
* button计时的操作
*/
private int second = 60;
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
if(second >= 1) {
System.out.println(second +"S");
second--;
} else {
System.out.println("重新获取")
}
};
};
本文介绍了四种不同的倒计时实现方法,包括直接使用Thread及Sleep()、利用Handler的sendMessageDelayed()、使用CountDownTimer以及结合Timer与Handler,每种方法都有详细的代码示例。
1万+

被折叠的 条评论
为什么被折叠?



