自己做的一个简易的倒数计时器。用一个线程和handler做的。
输入设定的时间的界面:是SetTime的Acitivity
点击确定后转到下面的界面:CountdownTimer的Acitivity
暂停后的界面:
有什么错误或不足之处还请各位指点:
项目文件在附件中,环境:ubuntu10.04+eclipse galileo
部分代码贴出来:
//实现三个按钮操作的内部类
private View.OnClickListener listener= new View.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.start:
{
//开始计时
updateHandler.post(updateThread);
break;
}
case R.id.pause:
{
//暂停计时
updateHandler.removeCallbacks(updateThread);
break;
}
case R.id.reset:
{
//重新设置
updateHandler.removeCallbacks(updateThread);
Intent intentReset=new Intent();
intentReset.setClass(CountdownTimer.this, SetTime.class);
CountdownTimer.this.startActivity(intentReset);
break;
}
}
}
};
//处理数据的线程,使用匿名内部类。
Runnable updateThread = new Runnable(){
@Override
public void run() {
//获取消息
Message msg=updateHandler.obtainMessage();
try{
Thread.sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}
while(time>0){
time--;
break;
}
hoursInt=time/3600;
minutesInt=(time-hoursInt*3600)/60;
secondsInt=time-hoursInt*3600-minutesInt*60;
//把此消息发送到消息队列中
updateHandler.sendMessage(msg);
//如果计时为0,就updateThread线程从线程队列中删除掉
if(time==0){
updateHandler.removeCallbacks(updateThread);
}
}};
Handler updateHandler=new Handler(){
//把消息从消息队列中取出处理
public void handleMessage(Message msg){
seconds.setText(secondsInt+"");
minutes.setText(minutesInt+"");
hours.setText(hoursInt+"");
updateHandler.post(updateThread);
}
};
}