用Thread和Handler实现倒计时

版权声明:本文为博主原创文章,未经博主允许不得转载。 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>
实现效果:



猜你喜欢

转载自blog.csdn.net/Leo_eight/article/details/50276679