Android计时器和倒计时的实现(含开始,暂停,和复位)
2021腾讯云限时秒杀,爆款1核2G云服务器298元/3年!(领取2860元代金券),
地址:https://cloud.tencent.com/act/cps/redirect?redirect=1062
2021阿里云最低价产品入口+领取代金券(老用户3折起),
入口地址:https://www.aliyun.com/minisite/goods
public class MainActivity extends Activity { private MyCount mc; private TextView tv; @Override public void onCreate(Bundle savedInst
倒计时和计时在比赛中经常用到,由于涉及到子线程和主线程的通信问题,同学们在制作的时候总有点畏手畏脚的,今天会有两个神器出现,帮助大家攻克这两道难关! 神器一:chronometer --andrdoid 控件的一种,自带监听方法,使用前需要将该控件设置在xml配置文件里 神奇二:CountDownTimer---代码控制的倒计时,只需要调用textview显示即可 ================================================================== 【计时】: 一切从简单开始,首先制作计时功能: 拖动该控件到graph页面上,xml文档如下:
<TextView
android:id="@+id/ctdtxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:textSize="40dp"
android:layout_gravity="center"
android:text="" />
<Chronometer
android:id="@+id/chronometer1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Chronometer"
android:textSize="80dp" />
一个textview用来显示,下面就是带的计时器了,接下来就是代码大显身手的时候 主Activity private class OnChronometer implements OnChronometerTickListener{
@Override
public void onChronometerTick(Chronometer arg0) {
// TODO Auto-generated method stub
String time=clock.getText().toString().replaceAll("[^(\\d{2}:\\d{2})]", "");
if((hour+":"+minute).equals(time)){
GameStart.this.vibrator.vibrate(new long[]{1000, 10,1000,100},0);//设置震动周期以及循环震动
}
}
}
private class StartListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
GameStart.this.clock.setBase(SystemClock.elapsedRealtime()-recordTime);//
GameStart.this.clock.start();//开始计时
}
private class StopListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
GameStart.this.clock.stop();//停止计时
GameStart.this.vibrator.cancel();//取消震动
recordTime=SystemClock.elapsedRealtime()-clock.getBase();
}
}
private class BaseListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
recordTime=0;//重置时间
GameStart.this.clock.setBase(SystemClock.elapsedRealtime());//复位
}
}
计时功能完成 效果如图:
======================================================== 【倒计时】: 采用一个CountDownTimer 同样准备一个textview用于显示 代码如下: public void initCountDownTimer(long millisInFuture){
timer = new CountDownTimer(millisInFuture, 1000) {
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
lefttime=millisUntilFinished;
cdtxt.setText(millisUntilFinished/1000/60+":"+millisUntilFinished/1000%60);
}
@Override
public void onFinish() {
cdtxt.setText("00:00");
}
};
}
开始倒计时后,只有暂停功能
private class StartListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(timer!=null){
Toast.makeText(getBaseContext(),lefttime+"", 100).show();
timer.start();
start.setVisibility(View.GONE); //设置开始按钮隐藏
}
}
}
private class StopListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
if(timer!=null&&!isPause){
Toast.makeText(getBaseContext(),"pause", 100).show();
isPause=true;
timer.cancel();
}
else if(lefttime!=0){
Toast.makeText(getBaseContext(),"continue", 100).show();
initCountDownTimer(lefttime);
timer.start();
isPause=false;
}
}
}
实现效果如下:
推荐:android倒计时功能的实现(CountDownTimer)
在逛论坛的时候,看到一个网友提问,说到了CountDownTimer这个类,从名字上面大家就可以看出来,记录下载时间。将后台线程的创建和Handler队列封装成为了一个方
相关阅读排行
- 1Android Https相关完全解析 当OkHttp遇到Https
- 2Android APK反编译详解(附图)
- 3[置顶] Android APK反编译就这么简单 详解(附图)
- 4Android Fragment 真正的完全解析(上)
- 5Android RecyclerView 使用完全解析 体验艺术般的控件