本文为大家演示了如何使用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. }

转载于:https://www.cnblogs.com/xiaochao1234/p/3937649.html

Chronometer控件实现的Android计时器相关推荐

  1. Android Chronometer控件

    1. Chronometer类 Chronometer是一个简单的计时器. 主要配置 format,显示格式,默认是"MM:SS"或"H:MM:SS",以%s来 ...

  2. android studio控件使用方法,android studio使用教程

    android studio使用教程 Android Studio是谷歌推出的一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studi ...

  3. android 代码控件框高,Android控件_TextView(显示文本框控件)

    一.TextView控件的常用属性 1.android:id--控件的id 2.android:layout_width--设置控件的宽度 wrap_content(包裹实际文本内容) fill_pa ...

  4. App控件定位:Android 控件介绍及元素定位方法

    本文将分享Android相关基础知识和Android APP控件定位工具的使用方法. 目录 Android基础知识 Android布局 Android四大组件 1.activity 2.Service ...

  5. android控件触摸缩放,Android控件之ZoomControls缩放使用

    先看一下效果 正常 缩小 放大 一.简介 ZoomControls是一组可缩放的控件.它包含俩个按钮(放大按钮.缩小按钮) 二.重要方法 hasFocus():判断焦点 hide():隐藏 onTou ...

  6. android设置控件的坐标,Android中使PopupWindow显示在指定控件的上下左右!

    **1.View中的方法getLocationOnScreen(int[] location):获取该控件在屏幕中的绝对坐标并将坐标保存在数组中:如下图所示,A为屏幕的原点,R,C点即为view的绝对 ...

  7. java使用gridview,网格控件GridView在Android中的使用

    我们在上面之前发表过一篇"使用Gallery实现缩略图浏览器",今天介绍另一种类似的控件,但是该控件是以网格的方式显示的,也就是说,当我们使用它来显示一组图片,结果图片将会以类似九 ...

  8. android开发控件水波纹,Android实现水波纹控件的方法

    有很多app使用过水波纹的这样的效果,看着很酷酷的样子,所以自己就撸码写了一个. 实现思路: 利用贝塞尔曲线绘制圆弧(也就是水波的波纹) 通过动画改变绘制的起始点使水波纹平移 首先,定义我们需要的自定 ...

  9. android控件使用大全,Android常见控件使用详解

    本文实例为大家分享了六种Android常见控件的使用方法,供大家参考,具体内容如下 1.TextView 主要用于界面上显示一段文本信息 2.Button 用于和用户交互的一个按钮控件 //为Butt ...

最新文章

  1. Matlab学习笔记——图形绘制
  2. Relation(NOIP模拟赛)(二分图染色)
  3. 让人难以置信的HTML5和JavaScript实验
  4. 以下各节已定义,但尚未为布局页“~/Views/_LayoutHome.cshtml”呈现:“mainContent; jsSrc”。...
  5. 苹果自研 M1 芯片性能强大,却不支持 Docker ?
  6. WSUS全攻略之二 :安装WSUS
  7. 常见花材的固定的方法有哪些_固定无梁拱形屋顶的方法都有哪些呢?
  8. mysql 三种循环语句_MySQL循环语句
  9. 十八掌教育_徐培成_Hadoop3.0-01.简介
  10. 将系统临时文件夹恢复到原来默认的目录
  11. oracle创建用户密码和权限--ORA-65096 invalid common user or role name
  12. 个人计算机更新主要基于,计算机基础知练识习题.doc
  13. STM32实战(1):搭建模板工程
  14. RPA or 爬虫?模拟人工访问某服务平台—增加空间的访问量
  15. 【GYM101409】2010-2011 ACM-ICPC, NEERC, Western Subregional Contest
  16. Android账号同步系统的建立——AccountManager及其他相关类的运用
  17. Golang 从入门到放弃
  18. 《 大型多人在线游戏开发》笔记
  19. fanuc系统md和mf区别_发那科 FANUC-MF 系统参数设定步骤(通过 MDI 进行设定)
  20. 讨论无穷积分的敛散性

热门文章

  1. GCC 版本下载地址,这里比较全,gcc版本一定要对应,不然就会各种不兼容依赖,把人折腾疯了
  2. 修改linux最大文件句柄数
  3. 解决PLSQL Developer 插入中文 乱码问题
  4. Confluence 6 修改日志文件的大小数量和级别
  5. 【C++】递归 课后习题3-13、3-14
  6. FFMPEG增加和提取字幕流
  7. JStorm如何保证消息不丢失
  8. Spring AOP介绍及源码分析
  9. Python 安装modules问题及import问题
  10. Jasper报表 自动序列号