Android Chronometer控件实现计时器函数详解

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

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

Android计时器实现思路

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

Android计时器实现代码
main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="@drawable/back"
  android:gravity="center"
  android:orientation="vertical" > 

  <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dip"
    android:orientation="horizontal" > 

    <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_weight="4"
      android:gravity="center"
      android:text="设置时间:" /> 

    <EditText
      android:id="@+id/edt_settime"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:inputType="number" />
  </LinearLayout> 

  <Chronometer
    android:id="@+id/chronometer"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:textColor="#ff0000"
    android:textSize="60dip" /> 

  <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dip"
    android:orientation="horizontal" > 

    <Button
      android:id="@+id/btnStart"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="开始记时" /> 

    <Button
      android:id="@+id/btnStop"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="停止记时" /> 

    <Button
      android:id="@+id/btnReset"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="重置" />
  </LinearLayout> 

</LinearLayout> 

Activity代码:

package com.jiahui.chronometer;  

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.SystemClock;
import android.text.format.Time;
import android.view.View;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.EditText;  

public class ChronometerDemoActivity extends Activity {  

  private int startTime = 0;  

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);  

    final Chronometer chronometer = (Chronometer) findViewById(R.id.chronometer);  

    Button btnStart = (Button) findViewById(R.id.btnStart);  

    Button btnStop = (Button) findViewById(R.id.btnStop);  

    Button btnRest = (Button) findViewById(R.id.btnReset);  

    final EditText edtSetTime = (EditText) findViewById(R.id.edt_settime);  

    btnStart.setOnClickListener(new View.OnClickListener() {  

      @Override
      public void onClick(View v) {  

        System.out.println("--开始记时---");
        String ss = edtSetTime.getText().toString();
        if (!(ss.equals("") && ss != null)) {
          startTime = Integer.parseInt(edtSetTime.getText()
              .toString());
        }
        // 设置开始讲时时间
        chronometer.setBase(SystemClock.elapsedRealtime());
        // 开始记时
        chronometer.start();  

      }
    });  

    btnStop.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        // 停止
        chronometer.stop();
      }  

    });  

    // 重置
    btnRest.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        chronometer.setBase(SystemClock.elapsedRealtime());  

      }  

    });
    chronometer
        .setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
          @Override
          public void onChronometerTick(Chronometer chronometer) {
            // 如果开始计时到现在超过了startime秒
            if (SystemClock.elapsedRealtime()
                - chronometer.getBase() > startTime * 1000) {
              chronometer.stop();
              // 给用户提示
              showDialog();
            }
          }
        });
  }  

  protected void showDialog() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
     builder.setIcon(R.drawable.eb28d25);
    builder.setTitle("警告").setMessage("时间到")
        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {
          }
        });  

    AlertDialog dialog = builder.create();
    dialog.show();
  }
} 

以上就是关于Android Chronometer控件实现计时器的相关函数,希望对大家学习Android软件编程有所帮助。

(0)

相关推荐

  • android之计时器(Chronometer)的使用以及常用的方法

    在Android的SDK中,为我们提供了一个计时器,这个计时器称为Chronometer,我们可以成它为Android的一个组件,同时它也具备自己独有的方法.下面我们举例介绍下这个计时器的使用以及常用的方法. 跟其他UI组件一样,当我们要使用它的时候,在布局文件中对应的位置声明定义计时器的位置与属性. 复制代码 代码如下: <Chronometer android:id="@+id/chronometer" android:layout_width="wrap_cont

  • Android编程之计时器Chronometer简单示例

    本文实例讲述了Android计时器Chronometer.分享给大家供大家参考,具体如下: Android中Chronometer控件继承自TextView,这个组件可以用1秒的时间间隔进行计时,并显示出计时结果.就是我们常说的计时器工具. public class ChronometerActivity extends Activity implements OnClickListener { private Chronometer mChronometer; private Button s

  • Android时分秒计时器的两种实现方法

    可能我们在开发中会时常用到计时器这玩意儿,比如在录像的时候,我们可能需要在右上角显示一个计时器.这个东西其实实现起来非常简单. 只需要用一个控件Chronometer,是的,就这么简单,我都不好意思讲述一下了. <Chronometer android:layout_width="wrap_content" android:layout_height="wrap_content" android:format="%s" android:id

  • Android计时器控件Chronometer应用实例

    显示一个计时器开始计时,当计时器到达15s的时候,停止计时.此时页面多一个重置按钮,可再次进行计时. 页面布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout

  • 学习使用Android Chronometer计时器

    本文实例为大家分享了Android Chronometer计时器基本使用方法,供大家参考,具体内容如下 在默认情况下,Chronometer组件只输出MM:SS或H:MM:SS的时间格式.例如,当计时到1分20秒时,Chronometer组件会显示01:20.如果想改变显示的信息内容,可以使用Chronometer类的setFormat方法.该方法需要一个String变量,并使用"%s"表示计时信息.例如,使用setFormat("计时信息:%s")设置显示信息,C

  • Android 编程下的计时器代码

    同样,为了防止用户恶意的频繁发送激活码,应用中需要对用户发送激活码的时间间隔进行限制,这时就需要用到倒计时器了,大概流程是这样的:页面初始化的时候,按钮为可点击状态,用户在点击"发送激活码"后按钮变为不可点击状态,同时按钮上的文字变为倒计时状态,倒计时结束后,按钮变为可点击状态,文字变为"发送激活码".具体逻辑看下面的代码: 复制代码 代码如下: package cn.sunzn.countdown; import android.app.Activity;impo

  • Android计时器chronometer使用实例讲解

    在Android中,可以使用计时器来实现对时间的监测,这个类所实现的功能有开始计时,停止计时,重新计时,设置计 时模式,下面列出计时器方法的原型: long getBase();//返回基地的时间,由setBase(long)设置的 String getFormat(); //返回当前字符串格式,此格式是通过setFormat()实现的 void setBase(long base); //设置时间,计数定时器指定的值 void setFormat(String format); //设置显示的

  • android开发教程之间隔执行程序(android计时器)

    下面是每隔一段时间就执行某个操作,直到关闭定时操作: 复制代码 代码如下: final Handler handler = new Handler();     Runnable runnable = new Runnable(){         @Override         public void run() {             // TODO Auto-generated method stub             // 在此处添加执行的代码             ha

  • Android计时器的三种实现方式(Chronometer、Timer、handler)

    本文实例为大家分享了Android计时器的三种方法,具体内容如下 目录: 1.借助Timer实现 2.调用handler.sendMessagedely(Message msg, long delayMillis) 3.借助布局Chronometer 1.借助Timer实现 (1) 布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http:/

  • android计时器,时间计算器的实现方法

    需求:默认为"00:00:00",点击开始按钮时清零后开始计时,出现如10:28:34.点击停止的时候停止计时.问题:使用Calendar DateFormat的方法,不设置时区获取到的小时是本地时区的(东八区的就是8),设置成GMT标准时区获取到的时间是12小时(12:00:00),设置24小时制无效.在开始时间加减各种小时都无效,而且计时只能到12小时就自动跳上去了,始终无法出现默认状态00:00:00开始计时的效果.尝试各种时间设置方法无效后只能自己写一个根据秒数转换时间格式字符

随机推荐