Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android中文API(143) —— CountDownTimer

Android中文API(143) —— CountDownTimer

編輯:Android開發實例

前言

  本章內容android.os.CountDownTime章節,版本為Android 4.0 r1,翻譯來自:"liliang1222",再次感謝他 !

 

 

CountDownTimer

譯者署名: liliang1222

版本:Android 4.0 r1

 

結構

繼承關系

public abstract class CountDownTimer extends Object

        

java.lang.Object

android.os.CountDownTimer

 

類概述

定時執行在一段時候後停止的倒計時,在倒計時執行過程中會在固定間隔時間得到通知(譯者:觸發onTick方法),下面的例子顯示在一個文本框中顯示一個30s倒計時:

 new CountdownTimer(30000, 1000) {

     public void onTick(long millisUntilFinished) {

         mTextField.setText("seconds remaining: " + millisUntilFinished / 1000);

     }

     public void onFinish() {

         mTextField.setText("done!");

     }

 }.start(); 

onTick的調用是同步的,保證這次調用不會在之前調用完成前發生。這裡的同步機制主要是用來:onTick的實現需要很多時間執行比倒計時間隔更重要的事情。

 

構造函數

         public CountDownTimer (long millisInFuture, long countDownInterval)

參數

                   millisInFuture  從開始調用start()到倒計時完成並onFinish()方法被調用的毫秒數。(譯者注:倒計時時間,單位毫秒)

                   countDownInterval  接收onTick(long)回調的間隔時間。(譯者注:單位毫秒)

 

公共方法

public final void cancel ()

         取消倒計時(譯者:取消後,再次啟動會重新開始倒計時)        

                  

public abstract void onFinish ()

         倒計時完成時被調用    

 

public abstract void onTick (long millisUntilFinished)

         固定間隔被調用

參數

                            millisUntilFinished   倒計時剩余時間。

 

public synchronized final CountDownTimer start ()

         啟動倒計時

 

補充

示例代碼

         Java:

package com.test.countdowntimer;

 

import android.app.Activity;

import android.os.Bundle;

import android.os.CountDownTimer;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;

 

import com.test.R;

 

public class CountDownTimeActivity extends Activity implements OnClickListener {

 

    TextView mTextView;

    Button mButton1;

    Button mButton2;

   

    @Override

    protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

      

       setContentView(R.layout.countdown);

      

       mTextView = (TextView)findViewById(R.id.textView1);

       mButton1 = (Button)findViewById(R.id.button1);

       mButton2 = (Button)findViewById(R.id.button2);

       mButton1.setOnClickListener(this);

       mButton2.setOnClickListener(this);

    }

 

    CountDownTimer timer = new CountDownTimer(40000,1000) {

      

       @Override

       public void onTick(long millisUntilFinished) {

           mTextView.setText("seconds remaining: " + millisUntilFinished / 1000);

           try {

              Thread.sleep(1200);

           } catch (InterruptedException e) {

              e.printStackTrace();

           }

           Log.e("CountDown",millisUntilFinished+"");

       }

      

       @Override

       public void onFinish() {

           mTextView.setText("done!");

       }

    };

   

    @Override

    public void onClick(View v) {

       switch(v.getId()){

       case R.id.button1:

           timer.start();

           break;

       case R.id.button2:

           timer.cancel();

           break;

       }

      

    }

}

 

 

         XML:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

 xmlns:android="http://schemas.android.com/apk/res/android"

 android:orientation="vertical"

 android:layout_width="match_parent"

 android:layout_height="match_parent">

    <TextView android:text="TextView" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>

    <Button android:text="開始" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>

    <Button android:text="取消" android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>

   

</LinearLayout>

 

說明:

 

CountDownTimer的間隔為1s,我們在onTIck方法裡面休眠了1.2s,所以log出來發現打印間隔變成了2s,即中間一次onTick方法沒有被執行(不會在之前一次調用完成前被調用)。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved