欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2024-03-01 13:59:46
本文为大家演示了如何使用chronometer控件实现android计时器的实例。 先贴上最终的实现效果图: android计时器实现思路 使用chronomet...

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

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

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

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软件编程有所帮助。