计时器Chronometer和时钟(AnalogClock和DigitalClock)
計時器Chronometer和時鐘(AnalogClock和DigitalClock)
(1)Android提供了兩個時鐘組件:AnalogClock和DigitalClock,DigitalClock繼承了TextView組件,也就是說它本身是一個文本框,只是他里面的內容總是當前時間,所以為DigitalClock設置android:text屬性沒有作用;AnalogClock繼承了View組件,重寫了View的OnDraw方法,它會在View上繪制模擬時鐘。
(2)AnalogClock與DigitalClock的異同:它們都會顯示當前的時間。DigitalClock顯示數字時鐘,會顯示當前時間的秒數;AnalogClock顯示模擬時鐘,不會顯示當前時間的秒數。
(3)Android還提供了一個計時器組件:Chronometer,該組件和DigitalClock都繼承自TextView,所以它們都會顯示出一段文本,但是Chronometer并不顯示當前時間,它顯示的是從某一個起始時間開始,一共過去了多長時間。
-------案例:
(1)main.xml文件
?
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center_horizontal"android:orientation="vertical" ><!-- 定義模擬時鐘 --><AnalogClock android:layout_width="wrap_content"android:layout_height="wrap_content"/><!-- 定義數字時鐘 --><DigitalClock android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="14pt"android:textColor="#f0f"android:drawableRight="@drawable/ic_launcher"/><!-- 計時器 繼承自TextView組件,并不是顯示當前的時間,顯示的是從某個起始時間開始一共過去多長時間--><Chronometer android:id="@+id/meter"android:layout_width="wrap_content"android:layout_height="wrap_content"/><!-- 點擊按鈕開始計時 --><Button android:id="@+id/but_start"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="開始"/></LinearLayout>(2)MainActivity.java文件
package com.yby.clock; import android.app.Activity; import android.os.Bundle; import android.os.SystemClock; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Chronometer; import android.widget.Chronometer.OnChronometerTickListener;import com.yby.clock.R;/*** 時鐘AnalogClock和DigitalClock* @author yinbenyang* DigitalClock繼承自TextView,顯示的總是當前的時間,數字時鐘,可以顯示當前的秒數* AnalogClock繼承自View組件,重寫了View的OnDraw方法,繪制模擬時鐘,不會顯示當前的秒數*/ public class MainActivity extends Activity{private Button but_start;private Chronometer meter;/*** 案例:手機里的勞力士* SystemClock是一個獲取系統時間的工具類*/@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.main);but_start = (Button) findViewById(R.id.but_start);meter = (Chronometer) findViewById(R.id.meter);but_start.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stub//設置開始計時的時間 meter.setBase(SystemClock.elapsedRealtime());//啟動計時器 meter.start();//將按鈕置為禁用but_start.setEnabled(false);}});//為Chronometer綁定時間監聽器meter.setOnChronometerTickListener(new OnChronometerTickListener() {@Overridepublic void onChronometerTick(Chronometer chronometer) {// TODO Auto-generated method stub//計時超過20sif(SystemClock.elapsedRealtime()-meter.getBase()>20*1000){//停止計時器 meter.stop();//設置按鈕為啟用but_start.setEnabled(true);}}});} }(3)效果圖:
?
轉載于:https://www.cnblogs.com/yby-blogs/p/4394438.html
總結
以上是生活随笔為你收集整理的计时器Chronometer和时钟(AnalogClock和DigitalClock)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ecmall类关系图(转)
- 下一篇: SH1B LMR62014XMFE/NO