前言
本章內容是 android.widget.Chronometer,譯為"計時器",版本為Android 2.2 r1 。期待你一起參與Android API 的中文翻譯,聯絡我over140@gmail.com。
聲明
歡迎轉載,但請保留文章原始出處:)
部落格園:http://www.cnblogs.com/
Android中文翻譯組:http://www.cnblogs.com/over140/
本文
一、結構
public class Chronometer extends TextView
java.lang.Object
android.view.View
android.widget.TextView
android.widget.Chronometer
二、概述
類實現了一個簡單的計時器。
你可以通過elapsedRealtime()
來
給它一個基準時間,並從該時間開始計數。如果你不給它基準時間,它將使用你調用start()
時的時間。預設它將顯示當前"MM:SS"或 "H:MM:SS"格式的時間,或者你能通過setFormat(String)
設定一個任一字元串來格式化顯示計時器顯示的時間。
三、XML屬性
屬性名稱 |
描述 |
android:format |
格式化字串:如果指定,計時器將根據這個字串來顯示,替換字串中第一個“%s”為當前"MM:SS"或 "H:MM:SS"格式的時間顯示。如果不指定,計時器將簡單的顯示"MM:SS" or "H:MM:SS"格式的時間。(譯者註:如:“This is a Chronometer %s” ) |
四、建構函式
public Chronometer (Context context)
初始化計時器對象。設定目前時間為基準時間。(譯者註:通過程式動態建立計時器對象)
public Chronometer (Context context, AttributeSet attrs)
初始化標準視圖布局資訊。設定目前時間為基準時間。(譯者註:指通過XML來指定一個計時器)
public Chronometer (Context context, AttributeSet attrs, int defStyle)
初始化標準視圖布局資訊和風格。設定目前時間為基準時間。
五、公用方法
public long getBase ()
返回先前由setBase(long)設定的基準時間。
public String getFormat ()
返回先前由setFormat(String)設定的格式化字串。
public Chronometer.OnChronometerTickListener getOnChronometerTickListener ()
傳回值
返回這個監聽器(可能為空白)是用於監聽計時器變化的事件。
public void setBase (long base)
設定基準時間(譯者註:基準時間為真正意義上開始計時的時間,而不是調用start時時間,比如調用本函數並設定參數base為SystemClock.elapsedRealtime()即表示從目前時間開始重新計時)。
參數
base 使用elapsedRealtime()為基準時間
public void setFormat (String format)
設定用於顯示的格式化字串。格式化字串:如果指定,計時器將根據這個字串來顯示,替換字串中第一個“%s”為當前"MM:SS"或 "H:MM:SS"格式的時間顯示。如果這個格式化字串為空白,或者你從未調用過setFormat()方法,計時器將簡單的顯示"MM:SS" or "H:MM:SS"格式的時間。(譯者註:如:"This is a Chronometer %s"
)
參數
format 格式化字串
public void setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener)
設定計時器變化時調用的監聽事件。
參數
listener The listener.
public void start ()
開始計時。不會影響到由setBase(long)設定的基準時間,僅顯示視圖。即使組件不顯示,計時器也會通過定時處理訊息來工作。為了確保不發生資源泄漏,使用者應確保每個start()方法都有對應的stop()調用(譯者註:有一個start就有一個stop)。(譯者註:start只是顯示計時,實際上計時是從基準時間開始的,所以通過stop停止計時若干秒後再start時,顯示的計時會突然跳到當前顯示的計時後的若干秒後繼續計時,見此文章。)
public void stop ()
停止計時。不會影響到由setBase(long)設定的基準時間,僅顯示視圖。這將停止訊息發送,有效地釋放計時器運行時start()佔用的資源。
六、受保護方法
protected void onDetachedFromWindow ()
視圖從表單上移除時調用,同時表單表面不再顯示視圖。
protected void onWindowVisibilityChanged (int visibility)
當表單中視圖的可視性(GONE, INVISIBLE, VISIBLE)發生改變時調用。注意它將告訴你你的視窗是否可以被視窗管理器識別,這並不能說明視窗是否被螢幕上的其他視窗遮擋,即使它本身是可見的。
參數
visibility 視窗新的可見度
七、補充
文章連結
android中的時間服務–Chronometer計時器服務
範例程式碼
Java檔案
public class ChronometerDemo extends Activity {
private Chronometer cher1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chronometer);
cher1 = (Chronometer) findViewById(R.id.cher1);
cher1.setFormat("計時:%s");
}
/**
* 開始計時
* @param view
*/
public void onStart(View view) {
cher1.start();
}
/**
* 停止計時
* @param view
*/
public void onStop(View view) {
cher1.stop();
}
/**
* 重設
* @param view
*/
public void onReset(View view) {
cher1.setBase(SystemClock.elapsedRealtime());
}
}
XML檔案
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"
android:layout_width="wrap_content" android:layout_height="wrap_content">
<Chronometer android:id="@+id/cher1" android:layout_width="wrap_content"
android:layout_height="wrap_content"></Chronometer>
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
<Button android:onClick="onStart" android:text="開始計時" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
<Button android:onClick="onStop" android:text="停止計時" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
<Button android:onClick="onReset" android:text="重設" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
</LinearLayout>
</LinearLayout>
結束
這篇譯文一個月前自己翻譯了一半,之後一直在做校稿和發布工作:)