Android 倒數定時器CountDownTimer

實現倒計時的效果

例子:發送驗證碼按鈕

效果圖:

這裏寫圖片描述

/**
 * 倒計時
 * 
 * @author admin
 * 
 */
public class MainActivity extends ActionBarActivity {

    private Button tvTime;// 顯示時間
    private MyCountDownTimer myCountDownTimer;// 倒計時對象

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvTime = (Button) findViewById(R.id.time);
        tvTime.setText("發送驗證碼");
        tvTime.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                start();

                tvTime.setEnabled(false);// 倒計時時不可點擊

            }
        });
    }

    /**
     * 開始
     * 
     * @param view
     */
    public void start() {
        long countDownInterval = 1000;// 間隔時間
        long millisInFuture = 20000;// 時長
        myCountDownTimer = new MyCountDownTimer(millisInFuture,
                countDownInterval);
        myCountDownTimer.start();
    }



    /**
     * 結束
     * 
     * @param view
     */
    public void end() {
        if (myCountDownTimer != null) {
            myCountDownTimer.cancel();

        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        end();
    }

    /**
     * 倒計時
     * 
     * @author admin
     * 
     */
    private class MyCountDownTimer extends CountDownTimer {

        public MyCountDownTimer(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
        }

        // 可直接更新UI
        @Override
        public void onTick(long millisUntilFinished) {
            tvTime.setText("剩餘時間:" + millisUntilFinished / 1000);// 轉化爲秒
        }

        @Override
        public void onFinish() {
            tvTime.setText("獲取驗證碼");
            tvTime.setEnabled(true);// 當時間結束時纔可以點擊

        }

    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章