歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

這是學習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.   
  9.     <LinearLayout  
  10.         android:layout_width="fill_parent"  
  11.         android:layout_height="wrap_content"  
  12.         android:layout_margin="10dip"  
  13.         android:orientation="horizontal" >  
  14.   
  15.         <TextView  
  16.             android:layout_width="fill_parent"  
  17.             android:layout_height="wrap_content"  
  18.             android:layout_weight="4"  
  19.             android:gravity="center"  
  20.             android:text="設置時間:" />  
  21.   
  22.         <EditText  
  23.             android:id="@+id/edt_settime"  
  24.             android:layout_width="fill_parent"  
  25.             android:layout_height="wrap_content"  
  26.             android:layout_weight="1"  
  27.             android:inputType="number" />  
  28.     </LinearLayout>  
  29.   
  30.     <Chronometer  
  31.         android:id="@+id/chronometer"  
  32.         android:layout_width="fill_parent"  
  33.         android:layout_height="wrap_content"  
  34.         android:gravity="center"  
  35.         android:textColor="#ff0000"  
  36.         android:textSize="60dip" />  
  37.   
  38.     <LinearLayout  
  39.         android:layout_width="fill_parent"  
  40.         android:layout_height="wrap_content"  
  41.         android:layout_margin="10dip"  
  42.         android:orientation="horizontal" >  
  43.   
  44.         <Button  
  45.             android:id="@+id/btnStart"  
  46.             android:layout_width="fill_parent"  
  47.             android:layout_height="wrap_content"  
  48.             android:layout_weight="1"  
  49.             android:text="開始記時" />  
  50.   
  51.         <Button  
  52.             android:id="@+id/btnStop"  
  53.             android:layout_width="fill_parent"  
  54.             android:layout_height="wrap_content"  
  55.             android:layout_weight="1"  
  56.             android:text="停止記時" />  
  57.   
  58.         <Button  
  59.             android:id="@+id/btnReset"  
  60.             android:layout_width="fill_parent"  
  61.             android:layout_height="wrap_content"  
  62.             android:layout_weight="1"  
  63.             android:text="重置" />  
  64.     </LinearLayout>  
  65.   
  66. </LinearLayout>  

Activity代碼:

  1. package com.jiahui.chronometer;  
  2.   
  3. import android.app.Activity;  
  4. import android.app.AlertDialog;  
  5. import android.app.Dialog;  
  6. import android.content.DialogInterface;  
  7. import android.os.Bundle;  
  8. import android.os.SystemClock;  
  9. import android.text.format.Time;  
  10. import android.view.View;  
  11. import android.widget.Button;  
  12. import android.widget.Chronometer;  
  13. import android.widget.EditText;  
  14.   
  15. public class ChronometerDemoActivity extends Activity {  
  16.   
  17.     private int startTime = 0;  
  18.   
  19.     public void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.main);  
  22.   
  23.         final Chronometer chronometer = (Chronometer) findViewById(R.id.chronometer);  
  24.   
  25.         Button btnStart = (Button) findViewById(R.id.btnStart);  
  26.   
  27.         Button btnStop = (Button) findViewById(R.id.btnStop);  
  28.   
  29.         Button btnRest = (Button) findViewById(R.id.btnReset);  
  30.   
  31.         final EditText edtSetTime = (EditText) findViewById(R.id.edt_settime);  
  32.   
  33.         btnStart.setOnClickListener(new View.OnClickListener() {  
  34.   
  35.             @Override  
  36.             public void onClick(View v) {  
  37.   
  38.                 System.out.println("--開始記時---");  
  39.                 String ss = edtSetTime.getText().toString();  
  40.                 if (!(ss.equals("") && ss != null)) {  
  41.                     startTime = Integer.parseInt(edtSetTime.getText()  
  42.                             .toString());  
  43.                 }  
  44.                 // 設置開始講時時間   
  45.                 chronometer.setBase(SystemClock.elapsedRealtime());  
  46.                 // 開始記時   
  47.                 chronometer.start();  
  48.   
  49.             }  
  50.         });  
  51.   
  52.         btnStop.setOnClickListener(new View.OnClickListener() {  
  53.             @Override  
  54.             public void onClick(View v) {  
  55.                 // 停止   
  56.                 chronometer.stop();  
  57.             }  
  58.   
  59.         });  
  60.   
  61.         // 重置   
  62.         btnRest.setOnClickListener(new View.OnClickListener() {  
  63.             @Override  
  64.             public void onClick(View v) {  
  65.                 chronometer.setBase(SystemClock.elapsedRealtime());  
  66.   
  67.             }  
  68.   
  69.         });  
  70.         chronometer  
  71.                 .setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {  
  72.                     @Override  
  73.                     public void onChronometerTick(Chronometer chronometer) {  
  74.                         // 如果開始計時到現在超過了startime秒   
  75.                         if (SystemClock.elapsedRealtime()  
  76.                                 - chronometer.getBase() > startTime * 1000) {  
  77.                             chronometer.stop();  
  78.                             // 給用戶提示   
  79.                             showDialog();  
  80.                         }  
  81.                     }  
  82.                 });  
  83.     }  
  84.   
  85.     protected void showDialog() {  
  86.         AlertDialog.Builder builder = new AlertDialog.Builder(this);  
  87.          builder.setIcon(R.drawable.eb28d25);  
  88.         builder.setTitle("警告").setMessage("時間到")  
  89.                 .setPositiveButton("確定"new DialogInterface.OnClickListener() {  
  90.                     @Override  
  91.                     public void onClick(DialogInterface dialog, int which) {  
  92.                     }  
  93.                 });  
  94.   
  95.         AlertDialog dialog = builder.create();  
  96.         dialog.show();  
  97.     }  
  98. }  

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

Copyright © Linux教程網 All Rights Reserved