Android倒計時工具類CountDownTimer


在開發中很多地方都會用到倒計時功能,例如限時搶購、12306支付倒計時、短信驗證碼120s倒計時等等,之前一直使用Handler + Runnable來實現,后來發現Android自帶的CountDownTimer這個工具類很好用,也是通過Handler和子線程來實現的。使用起來很方便,示例代碼如下:

package com.example.countdowntimer;

import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

    private TextView tvCount;
    private Button btnBegin;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tvCount = (TextView) findViewById(R.id.tvCount);
        btnBegin = (Button) findViewById(R.id.btnBegin);

        btnBegin.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                cdTimer.start();
            }
        });
    }

    /** * Parameters: * millisInFuture The number of millis in the future from the call to start() until the countdown is done and onFinish() is called. * countDownInterval The interval along the way to receive onTick(long) callbacks. */
    private CountDownTimer cdTimer = new CountDownTimer(10000, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            tvCount.setText((millisUntilFinished / 1000) + " s");
        }

        @Override
        public void onFinish() {
            tvCount.setText("0 s");
            Toast.makeText(MainActivity.this, "CountDownFinish", Toast.LENGTH_SHORT).show();
        }
    };
}

布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${relativePackage}.${activityClass}" >

    <TextView  android:id="@+id/tvCount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:textSize="28dp" android:text="10s" />

    <Button android:id="@+id/btnBegin" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/tvCount" android:layout_centerHorizontal="true" android:text="開始計時"/>

</RelativeLayout>

CountDownTimer的構造方法有兩個參數:
第一個參數:從調用start()開始,到計時結束的時間,也就是倒計時的總時間,單位為毫秒;
第二個參數:倒計時間的隔時間,單位為毫秒;

主要方法:
onTick(long millisUntilFinished),當前任務每間隔countDownInterval時間時回調。
onFinish(),當前倒計時任務完成的時候回調。
start(),啟動當前的任務。
另外還有一個cancel()方法,用來取消當前倒計時任務。

效果圖
開始計時

倒計時結束


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM