Android开发:Chronometer控件实现计时器

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

目前创新互联已为近千家的企业提供了网站建设、域名、网站空间、网站托管、服务器租用、企业网站设计、君山网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

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

Android计时器实现思路

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

Android计时器实现代码

main.xml:

XML/HTML代码

 
 
  1.  
  2. android:layout_width="fill_parent" 
  3. android:layout_height="fill_parent" 
  4. android:background="@drawable/back" 
  5. android:gravity="center" 
  6. android:orientation="vertical"> 
  7. android:layout_width="fill_parent" 
  8. android:layout_height="wrap_content" 
  9. android:layout_margin="10dip" 
  10. android:orientation="horizontal"> 
  11. android:layout_width="fill_parent" 
  12. android:layout_height="wrap_content" 
  13. android:layout_weight="4" 
  14. android:gravity="center" 
  15. android:text="设置时间:"/> 
  16. android:id="@+id/edt_settime" 
  17. android:layout_width="fill_parent" 
  18. android:layout_height="wrap_content" 
  19. android:layout_weight="1" 
  20. android:inputType="number"/> 
  21.  
  22. android:id="@+id/chronometer" 
  23. android:layout_width="fill_parent" 
  24. android:layout_height="wrap_content" 
  25. android:gravity="center" 
  26. android:textColor="#ff0000" 
  27. android:textSize="60dip"/> 
  28. android:layout_width="fill_parent" 
  29. android:layout_height="wrap_content" 
  30. android:layout_margin="10dip" 
  31. android:orientation="horizontal"> 
  32. android:id="@+id/btnStart" 
  33. android:layout_width="fill_parent" 
  34. android:layout_height="wrap_content" 
  35. android:layout_weight="1" 
  36. android:text="开始记时"/> 
  37. android:id="@+id/btnStop" 
  38. android:layout_width="fill_parent" 
  39. android:layout_height="wrap_content" 
  40. android:layout_weight="1" 
  41. android:text="停止记时"/> 
  42. android:id="@+id/btnReset" 
  43. android:layout_width="fill_parent" 
  44. android:layout_height="wrap_content" 
  45. android:layout_weight="1" 
  46. android:text="重置"/> 
  47.  
  48.  

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.     publicclass ChronometerDemoActivity extends Activity {    
  14.     privateint startTime = 0;    
  15.     publicvoid 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.     publicvoid 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.     publicvoid onClick(View v) {    
  41.     // 停止  
  42.                     chronometer.stop();    
  43.                 }    
  44.             });    
  45.     // 重置  
  46.             btnRest.setOnClickListener(new View.OnClickListener() {    
  47.     @Override 
  48.     publicvoid onClick(View v) {    
  49. chronometer.setBase(SystemClock.elapsedRealtime());    
  50.                 }    
  51.             });    
  52.             chronometer    
  53.                     .setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {    
  54.     @Override 
  55.     publicvoid 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.     protectedvoid 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.     publicvoid onClick(DialogInterface dialog, int which) {    
  73.                         }    
  74.                     });    
  75.             AlertDialog dialog = builder.create();    
  76.             dialog.show();    
  77.         }    
  78.     }  

当前文章:Android开发:Chronometer控件实现计时器
本文来源:http://www.shufengxianlan.com/qtweb/news3/533053.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联