本文为大家演示了如何使用Chronometer控件实现Android计时器的实例。

先贴上最终的实现效果图:

Android计时器实现思路

使用Chronometer控件实现计器的操作。通过设置setBase(long base)来设置初始时间,然后为其添加一个 setOnChronometerTickListener(Chronometer.OnChronometerTickListener l)事件来判断时间是否到了,然后再调用其stop()方法实现停止计时。

Android计时器实现代码

main.xml:

XML/HTML代码
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:background="@drawable/back"
  6. android:gravity="center"
  7. android:orientation="vertical" >
  8. <LinearLayout
  9. android:layout_width="fill_parent"
  10. android:layout_height="wrap_content"
  11. android:layout_margin="10dip"
  12. android:orientation="horizontal" >
  13. <TextView
  14. android:layout_width="fill_parent"
  15. android:layout_height="wrap_content"
  16. android:layout_weight="4"
  17. android:gravity="center"
  18. android:text="设置时间:" />
  19. <EditText
  20. android:id="@+id/edt_settime"
  21. android:layout_width="fill_parent"
  22. android:layout_height="wrap_content"
  23. android:layout_weight="1"
  24. android:inputType="number" />
  25. </LinearLayout>
  26. <Chronometer
  27. android:id="@+id/chronometer"
  28. android:layout_width="fill_parent"
  29. android:layout_height="wrap_content"
  30. android:gravity="center"
  31. android:textColor="#ff0000"
  32. android:textSize="60dip" />
  33. <LinearLayout
  34. android:layout_width="fill_parent"
  35. android:layout_height="wrap_content"
  36. android:layout_margin="10dip"
  37. android:orientation="horizontal" >
  38. <Button
  39. android:id="@+id/btnStart"
  40. android:layout_width="fill_parent"
  41. android:layout_height="wrap_content"
  42. android:layout_weight="1"
  43. android:text="开始记时" />
  44. <Button
  45. android:id="@+id/btnStop"
  46. android:layout_width="fill_parent"
  47. android:layout_height="wrap_content"
  48. android:layout_weight="1"
  49. android:text="停止记时" />
  50. <Button
  51. android:id="@+id/btnReset"
  52. android:layout_width="fill_parent"
  53. android:layout_height="wrap_content"
  54. android:layout_weight="1"
  55. android:text="重置" />
  56. </LinearLayout>
  57. </LinearLayout>

Activity代码:

Java代码
  1. package com.jiahui.chronometer;
  2. import android.app.Activity;
  3. import android.app.AlertDialog;
  4. import android.app.Dialog;
  5. import android.content.DialogInterface;
  6. import android.os.Bundle;
  7. import android.os.SystemClock;
  8. import android.text.format.Time;
  9. import android.view.View;
  10. import android.widget.Button;
  11. import android.widget.Chronometer;
  12. import android.widget.EditText;
  13. public class ChronometerDemoActivity extends Activity {
  14. private int startTime = 0;
  15. public void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.main);
  18. final Chronometer chronometer = (Chronometer) findViewById(R.id.chronometer);
  19. Button btnStart = (Button) findViewById(R.id.btnStart);
  20. Button btnStop = (Button) findViewById(R.id.btnStop);
  21. Button btnRest = (Button) findViewById(R.id.btnReset);
  22. final EditText edtSetTime = (EditText) findViewById(R.id.edt_settime);
  23. btnStart.setOnClickListener(new View.OnClickListener() {
  24. @Override
  25. public void onClick(View v) {
  26. System.out.println("--开始记时---");
  27. String ss = edtSetTime.getText().toString();
  28. if (!(ss.equals("") && ss != null)) {
  29. startTime = Integer.parseInt(edtSetTime.getText()
  30. .toString());
  31. }
  32. // 设置开始讲时时间
  33. chronometer.setBase(SystemClock.elapsedRealtime());
  34. // 开始记时
  35. chronometer.start();
  36. }
  37. });
  38. btnStop.setOnClickListener(new View.OnClickListener() {
  39. @Override
  40. public void onClick(View v) {
  41. // 停止
  42. chronometer.stop();
  43. }
  44. });
  45. // 重置
  46. btnRest.setOnClickListener(new View.OnClickListener() {
  47. @Override
  48. public void onClick(View v) {
  49. chronometer.setBase(SystemClock.elapsedRealtime());
  50. }
  51. });
  52. chronometer
  53. .setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
  54. @Override
  55. public void onChronometerTick(Chronometer chronometer) {
  56. // 如果开始计时到现在超过了startime秒
  57. if (SystemClock.elapsedRealtime()
  58. - chronometer.getBase() > startTime * 1000) {
  59. chronometer.stop();
  60. // 给用户提示
  61. showDialog();
  62. }
  63. }
  64. });
  65. }
  66. protected void showDialog() {
  67. AlertDialog.Builder builder = new AlertDialog.Builder(this);
  68. builder.setIcon(R.drawable.eb28d25);
  69. builder.setTitle("警告").setMessage("时间到")
  70. .setPositiveButton("确定", new DialogInterface.OnClickListener() {
  71. @Override
  72. public void onClick(DialogInterface dialog, int which) {
  73. }
  74. });
  75. AlertDialog dialog = builder.create();
  76. dialog.show();
  77. }
  78. }

Chronometer控件实现的Android计时器的更多相关文章

  1. Android Chronometer控件使用,计时器

    Android Chronometer实现了一个简单的计时器,继承自TextView,因此可以使用TextView的text控制属性来控制时间显示的颜色.字体大小等:可以定义时间显示格式,默认“MM: ...

  2. 【金阳光測试】基于控件核心技术探讨---Android自己主动化系列(2)---2013年5月

    第一讲分享了下安卓自己主动化一些概况和一些自己主动化框架现状和技术可以解决什么样的问题. 这次课就深入到android世界里面.遨游.翱翔.深入了解自己主动化測试核心技术. 搞过编程开发的同学听到in ...

  3. Android中Chronometer 计时器和震动服务控件

    Chronometer 计时器控件 首先在布局文件中添加chronometer控件:然后在mainActivity中获取到该控件 4 然后通过Button时间监听器中开启计时操作 5 chronome ...

  4. Android控件介绍

    1. 介绍 Android控件大多位于android.widget, android.view.View为他们的父类对于Dialog系列, android.app.Dialog为父类 Android的 ...

  5. 【转】Pro Android学习笔记(二三):用户界面和控制(11):其他控件

    目录(?)[-] Chronometer计时器控件 倒计时CountDownTimer Switch控件 Space控件 其他控件 Android提供了很多控件,基本上都是view的扩展. Chron ...

  6. Android 中常见控件的介绍和使用

    1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.la ...

  7. 怎样在Android实现桌面清理内存简单Widget小控件

    怎样在Android实现桌面清理内存简单Widget小控件 我们常常会看到类似于360.金山手机卫士一类的软件会带一个widget小控件,显示在桌面上,上面会显示现有内存大小,然后会带一个按键功能来一 ...

  8. Android控件篇

    Android中提供了丰富的UI空间.为了最大限度地发挥平台的性能.每个开发人员必须熟练掌握UI控件尤其是经常使用的UI控件.并能依据须要呈现的内容选择最恰当的控件. Android提供了XML配置和 ...

  9. Android Studio中Button等控件的Text中字符串默认大写的解决方法

    初学Android的时候,在Android Studio中xml里面添加一个Button.EditText等控件后,它的Text总是会显示大写,即使你输入的字符串是小写也不行,控制字符串大小写的属性是 ...

随机推荐

  1. site

    http://blog.csdn.net/zgmzyr/article/details/7657126

  2. Metaspace 之一--java8 去掉 perm 用 Metaspace 来替代

    正如大家所知,JDK 8 Early Access版已经提供下载.这使开发者可以体验Java8的新特性.其中之一,是Oracle从JDK7发布以来就一直宣称的要完全移除永久代空间.例如,字符串内部池, ...

  3. XTUOJ1250 Super Fast Fourier Transform 暴力

    分析:因为加起来不超过1e6,所以最多有1000+个不同的数 做法:离散化搞就好了 #include <cstdio> #include <iostream> #include ...

  4. 仿酷狗音乐播放器开发日志二十三 修复Option控件显示状态不全的bug(附源码)

    转载请说明原出处,谢谢~~ 整个仿酷狗工程的开发将近尾声,现在还差选项设置窗体的部分,显然在设置窗体里用的最多的就是OptionUI控件,我在写好大致的布局后去测试效果,发现Option控件的显示效果 ...

  5. schema对象介绍

    1.schema对象简介 数据库schema为一组数据结构的逻辑集合,称之为schema对象,schema对象最贱的为表和索引,schema对象由SQL创建和维护. 一个数据库用户拥有一个用户名和各种 ...

  6. Python十分钟入门

    [简介] Python是一种动态解释型的编程语言.Python可以在Windows.UNIX.MAC等多种操作系统上使用,也可以在Java..NET开发平台上使用. [特点] 1. Python使用C ...

  7. 线性模型(3):Logistic Regression

    此笔记源于台湾大学林轩田老师<机器学习基石><机器学习技法> (一)Logistic Regression 原理 对于分类问题,假设我们想得到的结果不是(x属于某一类)这种形式 ...

  8. 快速上手Android数据库操作

    Android采用关系型数据库SQLite3,它是一个支持SQL轻量级的嵌入式数据库,在嵌入式操作系统上有很广泛的应用,WM采用的也是SQLite3 关于过于.原理方面的东西在这篇文章里不会提到,但是 ...

  9. mac 添加安卓设备的支持

    1. 把android设备插到mac电脑上 2. 首先可以看一下之前在该mac电脑上有没有添加过这个 , 命令 : adb devices      如果显示出,下面字样,说明之前添加过了,下面就可以 ...

  10. 【VB技巧】VB静态调用与动态调用dll详解

    本文“[VB技巧]VB静态调用与动态调用dll详解”,来自:Nuclear'Atk 网络安全研究中心,本文地址:http://lcx.cc/?i=489,转载请注明作者及出处! [[请注意]]:在以下 ...