版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Leo_eight/article/details/50276679
在android开发中, 很多时候需要倒计时, 如获取验证码时.
需要一个倒计时在界面显示出来, 可以开个线程更新界面,
但非UI线程无法更新界面, 就需要用到Handler了
代码实现:
<span style="font-size:18px;">btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener(){
<span style="white-space:pre"> </span>@Override
public void onClick(View v) {
new Thread(){
@Override
public void run() {
for(; count > 0; count--){
if(count<=0){
break;
}
mHandler.sendEmptyMessage(0x01);
try {
Thread.sleep(1000);
} catch (Exception e) {
<span style="white-space:pre"> </span>// TODO: handle exception
}
}
mHandler.sendEmptyMessage(0x02);
};
}.start();
}
}); </span>
<span style="font-size:18px;">private Handler mHandler = new Handler(){
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>public void handleMessage(Message msg) {
<span style="white-space:pre"> </span>switch (msg.what) {
<span style="white-space:pre"> </span>case 0x01:
<span style="white-space:pre"> </span>btn.setText("倒计时("+ count+")");
<span style="white-space:pre"> </span>break;
<span style="white-space:pre"> </span>case 0x02:
<span style="white-space:pre"> </span>btn.setText("倒计时开始");
<span style="white-space:pre"> </span>default:
<span style="white-space:pre"> </span>break;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>};
};</span>
实现效果: