Android -- CountDownTimer Android中文API(143) —— CountDownTimer

Android中文API(143) —— CountDownTimer

 

前言html

  本章內容android.os.CountDownTime章節,版本爲Android 4.0 r1,翻譯來自:"liliang1222"java

 

聲明android

  歡迎轉載,但請保留文章原始出處:) app

    博客園:http://www.cnblogs.com/ide

    Android中文翻譯組: http://androidbox.sinaapp.com/

 

 

CountDownTimer函數

譯者署名: liliang1222post

版本:Android 4.0 r1this

 

結構url

繼承關係spa

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 ()

         啓動倒計時

 

補充

文章精選

Android 定時器

android倒計時功能的實現(CountDownTimer

示例代碼

         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方法沒有被執行(不會在以前一次調用完成前被調用)。

相關文章
相關標籤/搜索