歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android應用小實例--炫酷計時器

Android應用小實例--炫酷計時器

日期:2017/3/1 11:06:49   编辑:Linux編程

這是學習Chronometer控件做的一個小例子,貼上自己的代碼,與大家交流。

實現效果:

實現思路:

使用Chronometer控件實現計器的操作。通過設置setBase(long base)來設置初始時間,然後為其添加一個setOnChronometerTickListener(Chronometer.OnChronometerTickListener l)事件來判斷時間是否到了,然後再調用其stop()方法實現停止計時。

Android應用小實例--炫酷計時器源代碼下載:

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /pub/Android源碼集錦/2011年/11月/Android應用小實例--炫酷計時器源代碼/

實現代碼:

main.xml:

  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代碼:

  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. }

發現的問題:一直不知道怎麼去設置讓其時間顯示為分:秒:毫秒。在其setFormat方法裡不知道如何設置,希望大家知道的話告知之,我再改進下程序。謝謝

Copyright © Linux教程網 All Rights Reserved