前言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倒計時功能的實現(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方法沒有被執行(不會在以前一次調用完成前被調用)。