android 中文 api (43) —— Chronometer

來源:互聯網
上載者:User

前言

  本章內容是 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>

結束

  這篇譯文一個月前自己翻譯了一半,之後一直在做校稿和發布工作:)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.