安卓计时器开发

原创 2015年11月18日 15:13:26

        我们在开发安卓应用时,经常会用到计时器功能,用来设定一些计时任务或记录某一状态的维持时间。在安卓的SDK中有专门的计时器控件(android.widget.Chronometer),我们只需在源码中添加这一控件,并添加一些控制按钮进行计时控制即可。

        但是在运行后我们会发现,该计时器的控制函数start()和stop()只是单次实现计时和停止功能,就像以前的秒表给多人跑步机时一样,stop()虽然让控件显示的时间停止了,但后台的时间仍在继续跑,当再次start()时,控件显示的时间会一下跳变到后台记录的时间,这说明start()和stop()只是让时间表面上的停止,并不是真正的停止。

        有时,我们需要计时器能够实现暂停和继续,也就是说当继续计时时,计时器显示的时间是继续按暂停前的时间来跑的。要想实现这样的功能,只需定义另外几个函数,对时间记录做相应的运算处理即可。

        以下是实现代码:

MainActivity.java

package com.android.time;

import android.app.Activity;
import android.app.Application;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.os.SystemClock;
import android.widget.Chronometer;

public class MainActivity extends Activity implements OnClickListener {

	
	private Chronometer time;// 计时器
	private long recordingTime = 0;// 记录下来的总时间
	private long mExitTime = 0;
	

	public void onRecordStart() {
		time.setBase(SystemClock.elapsedRealtime() - recordingTime);// 跳过已经记录了的时间,起到继续计时的作用
		time.start();
	}

	public void onRecordPause() {
		time.stop();
		recordingTime = SystemClock.elapsedRealtime() - time.getBase();// 保存这次记录了的时间
	}

	public void onRecordStop()//计时器归零
        {
		recordingTime = 0;
		time.setBase(SystemClock.elapsedRealtime());
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.main);
		
		time = (Chronometer) this.findViewById(R.id.chronometer);
                //此处也可以定义一些按钮来控制计时器
	
	}
}
main.xml

布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <Chronometer
        android:id="@+id/chronometer"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:format="格式"
        android:textColor="颜色"
        android:textSize="字体大小" />

</RelativeLayout>
        这样就可以实现计时器的暂停与继续了。


版权声明:本文为博主原创文章,转载请注明出处。

Android简单计时器详解(Timer)

Android计时器详解(Timer)在开发中我们有时会有这样的需求,即在固定的每隔一段时间执行某一个任务。比如UI上的控件需要随着时间改变,我们可以使用Java为我们提供的计时器的工具类,即Time...
  • u012849206
  • u012849206
  • 2016年01月09日 13:18
  • 9171

android简单计时器的开发

1、首先进行界面设计: 1)一个文本框用来输入时间; 2)3个Button按钮分别用来显示获取倒计时时间,开始计时以及停止计时; 3)一个文本用来显示获取到的倒计时时间。 2:功能设计: 1...
  • qq_25585701
  • qq_25585701
  • 2016年07月05日 17:38
  • 738

Android我自己的简易(秒表)计时器Chronometer

Android我自己的简易(秒表)计时器Chronometer就是一个简单的计时器布局文件:activity_main.xml...
  • xyzz609
  • xyzz609
  • 2016年07月13日 16:06
  • 3332

Android实现定时器的几种方法

前言这几天正在看Android官方的开发文档,里面有很多很值得思考的开发建议,有时间的朋友可以去看一下(官方是英文文档,如果看不懂可以通过浏览器插件翻译对比着看,还是很方便的)。其中一篇课程提到了Al...
  • u011315960
  • u011315960
  • 2016年08月04日 18:23
  • 13047

【Android应用实例01】计时器

学习资料 简易秒表Android源代码 自己修改以后: 【情景1】点击start,计时开始。点击stop,计时结束。点击reset,计时清零。 【情景2】点击start,计时开始。点击stop...
  • u014675888
  • u014675888
  • 2017年03月03日 15:12
  • 84

【Android开发】基本组件-计时器

计时器(Chronometer)组件可以显示从某个起始时间开始,一共过去了多长时间的文本。由于该组件继承TextView,所以它以文本的相形式显示内容。使用该组件也比较简单,通常只需要一下五个方法: ...
  • u013517797
  • u013517797
  • 2015年04月01日 15:28
  • 1694

安卓开发之简单计时器

功能:Menu包括 计时、停止、清零           长按计时器控件 弹出上下文菜单  包括开始计时、终止计时、清零 重点:长按计时器弹出上下文菜单。  //长按计时器时,出现上下文菜单 ...
  • youshenxuzuo
  • youshenxuzuo
  • 2013年07月22日 10:53
  • 1516

Android三种实现定时器的方法

方法一:Handler+Thread package com.xunfang.handerDemo; import android.app.Activity; ...
  • tiramisu_ljh
  • tiramisu_ljh
  • 2017年03月04日 17:29
  • 396

[安卓初学者实验]使用计时器(Chronometer)实现可暂停的计时器

1.实验要求 新建一个工程, a.修改布局文件,使其包含一个计时器(Chronometer)和两个按钮(Button)startButton和stopButton分别表示“开始/暂停/继续”和“结...
  • mai_pupil
  • mai_pupil
  • 2016年06月25日 09:46
  • 551

【Android】Android开发小功能,倒计时的实现。时间计时器倒计时功能。

作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 首先给大家看一下我们今天这个...
  • qq_21376985
  • qq_21376985
  • 2016年09月10日 16:21
  • 2559
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:安卓计时器开发
举报原因:
原因补充:

(最多只允许输入30个字)