Android倒计时器

问题描述

我定义了一个倒计时器,代码如下。有两个界面,当点第一个界面(front)的Next键时进入倒计时界面(FixTime)点击"开始"倒计时,但当我点击"后退"回到第一个界面,再点击Next回来时,没有接着上次的计时,而是恢复了最初的状态。哪位大师在我写的代码的基础上修改一下,让它能继续计时,不胜感激。front.javapackagecom.example.fixtime2;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;publicclassfrontextendsActivity{privateButtonbutton_next;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.front);button_next=(Button)this.findViewById(R.id.next);button_next.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){Intentintent=newIntent(front.this,FixTime.class);startActivity(intent);front.this.finish();}});}}FixTime.javapackagecom.example.fixtime2;importandroid.os.Bundle;importandroid.app.Activity;importandroid.content.Intent;importcom.example.fixtime2.AdvancedCountdownTimer;//////两个Activity之间的联系!!!importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.SeekBar;importandroid.widget.TextView;importandroid.widget.Button;publicclassFixTimeextendsActivityimplementsOnClickListener{privateTextViewtxt_time=null;//显示剩余时间privateButtonbtn_start=null;//各个按钮privateButtonbtn_pause=null;privateButtonbtn_con=null;privateButtonbtn_reset=null;privateButtonbtn_exit=null;privatelonghour=0;//时间变量privatelongminute=0;privatelongsecond=0;privatelongtime=0;privateMyCountcount=null;//定时类对象在下面代码中有定义class——MyCount。Viewv1;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);v1=getLayoutInflater().inflate(R.layout.fixtime,null);setContentView(v1);findViews();setListener();hour=Long.parseLong("0");minute=Long.parseLong("30");second=Long.parseLong("0");time=(hour*3600+minute*60+second)*1000;//因为以ms为单位,所以乘以1000.count=newMyCount(time,1000);}//识别各个控件并设置按钮状态privatevoidfindViews(){txt_time=(TextView)findViewById(R.id.text);btn_start=(Button)findViewById(R.id.start);btn_pause=(Button)findViewById(R.id.pause);btn_con=(Button)findViewById(R.id.con);btn_reset=(Button)findViewById(R.id.reset);btn_exit=(Button)findViewById(R.id.exit);btn_pause.setEnabled(false);btn_con.setEnabled(false);}//绑定Button监听器privatevoidsetListener(){btn_start.setOnClickListener(this);btn_pause.setOnClickListener(this);btn_con.setOnClickListener(this);btn_reset.setOnClickListener(this);btn_exit.setOnClickListener(this);}//设置监听器@OverridepublicvoidonClick(Viewv){switch(v.getId())//获取按键的ID值!!!!!!{//点击开始计时按钮caseR.id.start:count.start();//开始计时!!!!!!!!!!btn_start.setEnabled(false);btn_pause.setEnabled(true);break;//点击重置按钮caseR.id.reset:count.cancel();//取消及时,重置界面状态txt_time.setText("剩余时间:0");btn_pause.setEnabled(false);btn_con.setEnabled(false);btn_start.setEnabled(true);break;//点击退出按钮caseR.id.exit:Intentintent=newIntent(FixTime.this,front.class);startActivity(intent);break;default:break;}}//实现计时功能的类classMyCountextendsAdvancedCountdownTimer{publicMyCount(longmillisInFuture,longcountDownInterval){//这两个参数在AdvancedCountdownTimer.java中均有(在“构造函数”中).super(millisInFuture,countDownInterval);}@OverridepublicvoidonFinish(){txt_time.setText("剩余时间0:0:0");}//更新剩余时间@OverridepublicvoidonTick(longmillisUntilFinished,intpercent){longmyhour=(millisUntilFinished/1000)/3600;longmyminute=((millisUntilFinished/1000)-myhour*3600)/60;longmysecond=millisUntilFinished/1000-myhour*3600-myminute*60;txt_time.setText("剩余时间"+myhour+":"+myminute+":"+mysecond);}}}AdvancedCountDown.javapackagecom.example.fixtime2;importandroid.os.Handler;importandroid.os.Message;publicabstractclassAdvancedCountdownTimer{privatestaticfinalintMSG_RUN=1;privatefinallongmCountdownInterval;//定时间隔,以毫秒计privatelongmTotalTime;//定时时间privatelongmRemainTime;//剩余时间//构造函数publicAdvancedCountdownTimer(longmillisInFuture,longcountDownInterval){mTotalTime=millisInFuture;mCountdownInterval=countDownInterval;mRemainTime=millisInFuture;}//取消计时publicfinalvoidcancel(){mHandler.removeMessages(MSG_RUN);}//重新开始计时publicfinalvoidresume(){mHandler.sendMessageAtFrontOfQueue(mHandler.obtainMessage(MSG_RUN));}//暂停计时publicfinalvoidpause(){mHandler.removeMessages(MSG_RUN);}//开始计时publicsynchronizedfinalAdvancedCountdownTimerstart(){if(mRemainTime<=0){//计时结束后返回onFinish();returnthis;}//设置计时间隔mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_RUN),mCountdownInterval);returnthis;}publicabstractvoidonTick(longmillisUntilFinished,intpercent);//计时中publicabstractvoidonFinish();//计时结束//通过handler更新androidUI,显示定时时间privateHandlermHandler=newHandler(){@OverridepublicvoidhandleMessage(Messagemsg){synchronized(AdvancedCountdownTimer.this){if(msg.what==MSG_RUN){mRemainTime=mRemainTime-mCountdownInterval;if(mRemainTime<=0){onFinish();}elseif(mRemainTime<mCountdownInterval){sendMessageDelayed(obtainMessage(MSG_RUN),mRemainTime);}else{onTick(mRemainTime,newLong(100*(mTotalTime-mRemainTime)/mTotalTime).intValue());sendMessageDelayed(obtainMessage(MSG_RUN),mCountdownInterval);}}}}};}

时间: 2024-08-01 22:01:33

Android倒计时器的相关文章

Android中CountDownTimer倒计时器用法实例_Android

本文实例讲述了Android中CountDownTimer倒计时器用法.分享给大家供大家参考,具体如下: 在平时我们编程的时候,经常会用到倒计时这个功能,很多人不知道Android已经帮封装好了一个类,往往都自己写.现在发现了这个类,大家共享一下: 在一个TextView不断显示剩下的时间,代码如下: private TextView vertifyView; private CountDownTimer timer = new CountDownTimer(10000, 1000) { @Ov

Android中CountDownTimer倒计时器用法实例

本文实例讲述了Android中CountDownTimer倒计时器用法.分享给大家供大家参考,具体如下: 在平时我们编程的时候,经常会用到倒计时这个功能,很多人不知道Android已经帮封装好了一个类,往往都自己写.现在发现了这个类,大家共享一下: 在一个TextView不断显示剩下的时间,代码如下: private TextView vertifyView; private CountDownTimer timer = new CountDownTimer(10000, 1000) { @Ov

巧用WPS演示2005制作比赛用倒计时器

新学期伊始,刚到办公室,团委的陈书记就找上门来了.原来学校团委想要联合语文组在国庆节前举办一场以"弘扬民族精神"为主题的演讲比赛,规定每位选手的演讲时间为3-5分钟.为了更好地烘托比赛气氛,她想让我来帮助设计一个演示文稿,要求既要能显示出每位参赛选手的基本信息,又要具备倒计时功能,能够即时显示出选手比赛的剩余时间.参赛选手基本信息的显示很容易实现,但比赛倒计时器的制作却让我大伤脑筋,经过一段时间的摸索,我终于利用WPS演示2005圆满地完成了任务.下面笔者就重点介绍一下比赛倒计时器的制

WPS演示制作60秒倒计时器效果的方法

WPS演示制作60秒倒计时器效果的方法   操作步骤 1.单击菜单栏"插入",在其下拉菜单中"文本框"的子菜单中选择"竖向"命令,指向在幻灯片编辑窗口中需要插入文本框的位置,点击鼠标左键,向右下拖动出一个文本框,文本框内出现一条横向闪动的细线,输入数字9.8.7.6.5.4.3.2.1.0,设置字体为微软雅黑和字号大小为40. 通过使用组合键Ctrl加鼠标左键拖动复制出3个相同的文本框,选中这4个相同的文本框,依次单击"绘图"

如何设置PPT演示文稿的倒计时器

  在ppt上实现倒计时一是为了追求个性化的PPT;二是为了实用,其方法网上介绍了不少,特别是对于初学者,有些看了甚至会云里雾里的感觉--本着简单.实用.大众化.可操作的想法,下面为大家介绍设置PPT演示文稿的倒计时器的方法,希望大家对大家有所帮助. ①下载一个"PPT倒计时加载宏插件", ②启动PowerPoint,单击菜单"工具"找到"宏",点击"安全性",将安全调整为中或低,以便能使用宏,点击"确定"

ppt幻灯片倒计时器动画效果制作教程

当我们在PPT幻灯片开始时做一个倒计时器,那会为幻灯片增色不少,今天绿茶小编就为大家讲解ppt幻灯片倒计时器动画效果制作的方法,一起来学东西一下吧~ 第一步.打开Office软件的PowerPoint,画个圈圈,设置形状轮廓,填充颜色,添加数字; 第二步.设置动画一,具体步骤如下图; 第三步.设置动画二; 第四步.复制于黏贴; 第五步.对齐. 倒计时器就完成咯~ 分类: PowerPoint教程

ios-不清楚倒计时器的问题

问题描述 不清楚倒计时器的问题 需要做一个倒计时器,使用NSTimeInterval.但是标签不更新啊. - (IBAction)startTimer:(id)sender{ timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerAction:) userInfo:nil repeats:YES]; } - (void)timerAction:(NSTimer *)t { i

c#-C#编写番茄钟倒计时器

问题描述 C#编写番茄钟倒计时器 哪位大神知道那个倒计时器怎么编啊,三十分钟为一个番茄,每次计时完都把以前的番茄数加起来,并做一个显示番茄个数的界面 解决方案 直接设置一个 Timer,超时时间设置为30分钟.超时时间到了,加一:重新开始计时.重复这一过程就可以完成想要的. 解决方案二: http://blog.csdn.net/hugoandpig/article/details/7743452 解决方案三: public static void workOvertimeTimerCallba

vc++-怎么设计一个倒计时器,例如输入10秒,一秒为单位,每减少一秒到输出一次,时间为零是提醒

问题描述 怎么设计一个倒计时器,例如输入10秒,一秒为单位,每减少一秒到输出一次,时间为零是提醒 "ojjaks(kidbisjsnsnsjxjjxjhkshsjsh)"gajshbsjsihsihshsnxjsn 解决方案 VC++使用Timerhttp://download.csdn.net/detail/opbrave/7688355 解决方案二: 定时器处理函数中设置一个定时数10,启动秒定时器.每一秒处理一次:定时数减1,判断定时数是否为0,是则提醒