`

Android计时器和倒计时的实现(含开始,暂停,和复位)

阅读更多

            倒计时和计时在比赛中经常用到,由于涉及到子线程和主线程的通信问题,同学们在制作的时候总有点畏手畏脚的,今天会有两个神器出现,帮助大家攻克这两道难关!

神器一: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;
        	
        }
           
              
        }  
          
    }  

 实现效果如下:



 

 

  • 大小: 6 KB
  • 大小: 5.3 KB
  • 大小: 2.5 KB
0
0
分享到:
评论

相关推荐

    Android Studio 写的时分秒计时器

    本项目是一个简单的时分秒计时器应用,它包含"开始"和"停止"两个功能按钮,用户可以通过这些按钮来控制计时器的工作状态。 首先,我们需要了解Android Studio项目的结构。在这个项目的目录中,`gradlew.bat`是一个...

    Android简单计时器实现

    本示例提供的"Android简单计时器实现"是一个基本的计时器应用,它包含开始、停止功能,并能实时显示秒数。这个项目适合初学者学习和理解Android计时器的实现方式,也可以根据自己的需求进行修改以适应不同的项目需求...

    Android计时器实现

    本文将深入探讨如何在Android中实现计时器功能,主要以`HLQCountDownTimer`为例,这是一个自定义的倒计时计时器类。 ### 一、Android计时器基础 在Android中,有多种计时器实现方式,包括`java.util.Timer`、`...

    Android应用源码之带暂停功能倒计时TimeCountDown盒子适用

    通过学习和研究这个`TimeCountDown`源码,开发者不仅可以了解到如何在Android中实现一个具有暂停功能的倒计时,还可以从中学习到自定义组件、多线程编程以及异常处理等Android开发的重要技巧。这对于提升个人技能和...

    android,linux 计时器多种实现

    在Android和Linux操作系统中,计时器是一种至关重要的机制,用于执行特定时间间隔的操作或触发时间相关的事件。本文将深入探讨三种不同的计时器实现,包括它们的工作原理、优缺点以及适用场景。 第一种计时器实现:...

    Android简单的计时器源码

    在Android开发中,计时器(Timer)是一个非常常见的组件,用于实现各种定时任务,比如倒计时、游戏计时、动画间隔等。本资源提供了一个简单的Android计时器源码,包含了开始、暂停和重置功能,是学习Android计时器...

    Android倒计时 Android仿京东倒计时 Android商城倒计时

    本项目"Android倒计时 Android仿京东倒计时 Android商城倒计时"正是针对这种需求而设计的,通过实现一个定制化的倒计时组件,开发者可以方便地在自己的应用中添加类似功能。 首先,`CountDownTimer`是Android SDK...

    一个简单的android计时器

    `CountDownTimer`类是Android提供的一个内置计时工具,它能从一个预设的总时间开始倒计时,并在每个时间间隔执行特定的代码块,直到计时结束。其构造函数接受两个参数:总毫秒数和间隔毫秒数。例如: ```java new ...

    多功能计时器-倒计时器

    在IT行业中,计时器和倒计时器是常见的实用工具,尤其在组织各类活动或比赛中,它们扮演着至关重要的角色。"多功能计时器-倒计时器"这款应用程序,正如其标题所示,旨在提供一种高效且灵活的计时解决方案,适应多种...

    android正计时和倒计时

    在Android开发中,正计时和倒计时是常见的功能,比如用于游戏计时、定时提醒或者倒计时器应用。本教程将详细介绍如何在Android环境中实现这些功能,包括开始计时、开始倒计时、暂停、继续以及重置。 首先,我们需要...

    Android-Android开发小功能倒计时的实现。时间计时器倒计时功能。

    在Android应用开发中,倒计时(CountDownTimer)是一个常用的小功能,它通常用于创建时间计时器,比如赛事倒计时、闹钟、定时提醒等。本篇将详细介绍如何在Android中实现一个倒计时功能,并探讨相关的关键知识点。 ...

    android简易倒计时器

    在本文中,我们将深入探讨Android倒计时器的工作原理、如何创建以及如何在实际应用中使用。 首先,让我们了解一下Android中的CountDownTimer类。它是Android SDK提供的一个内置类,位于`android.os`包中,用于创建...

    android 促销 倒计时 时分秒

    在Android开发中,创建一个促销倒计时的计时器是一项常见的需求,它通常用于电商平台或者活动页面,用来展示剩余的优惠时间,增加用户的紧迫感。这个特定的案例提到的"android 促销 倒计时 时分秒"是一个显示天、时...

    android 计时器

    "android 计时器"通常指的是Android SDK提供的一系列类,用于帮助开发者实现倒计时或者周期性任务。本篇将深入探讨如何使用Android中的计时器,特别是基于`CountDownTimer`的改编版本。 `CountDownTimer`是Android...

    Android RecycleView全部item倒计时的高效实现

    本篇文章将深入探讨如何高效地在Android RecycleView中实现所有item的倒计时功能。 首先,我们需要理解RecycleView的工作原理。它通过复用已滚动出屏幕的view来节省内存,这意味着一个view可能被用来显示不同的数据...

    计时器(倒计时,正计时)demo

    本Demo以layui UI框架为基础,实现了一个可切换的计时器,支持倒计时和正计时两种模式。layui是一款优秀的前端UI框架,以其简洁、易用的设计理念深受开发者喜爱,它提供了丰富的组件和样式,方便快速构建美观的用户...

    Android-用kotlin实现的纯粹倒计时应用

    Android架构组件中的LiveData和ViewModel可以帮助实现数据在Activity和Fragment之间的存活,即使设备旋转或其它配置改变,倒计时状态也能保持。 **8. 单元测试与集成测试** 为了确保代码质量,开发者通常会为应用...

    Android倒计时器

    本篇将详细讲解如何在Android应用中实现一个具备开始、暂停、继续、停止和重置功能的倒计时器。 一、倒计时器基础 Android中的`CountDownTimer`类位于`android.os`包下,它提供了一个简单的方法来启动一个倒计时。...

    Android 实现一个计时器

    4. **暂停计时器**:为了实现暂停功能,我们需要一个布尔变量`isPaused`来跟踪计时器状态。在需要暂停时,将`isPaused`设置为`true`,并调用`handler.removeCallbacks(timerRunnable)`取消当前的延时任务。 ```java...

    Qt实现计时器的启动、暂停与继续

    `start()`方法用于启动计时器,`stop()`方法用于暂停计时器: ```cpp void MainWindow::startTimer() { timer-&gt;start(1000); // 每秒触发一次 } void MainWindow::pauseTimer() { timer-&gt;stop(); } void ...

Global site tag (gtag.js) - Google Analytics