首页 > 代码库 > Android CountDownTimer倒计时简单使用

Android CountDownTimer倒计时简单使用

CountDownTimer: 

Schedule a countdown until a time in the future, with regular notifications on intervals along the way.

倒计时这个类比较简单,可以学习这样来设计类,下面看这个类的一个简单应用的例子:

这么个小例子也需要优化,优化之前什么也没考虑只实现了效果, 简单优化下增加了了多次点击Dlialog不重复创建和取消countdowntimer任务的代码;

简单优化后:

package com.example.dliagdemo;

import android.app.Activity;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

	private Button btnSure;
	private MainActivity instance;
	private CountDownTimer mDownTimer;
	private Dialog dialog;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		instance = this;
		Button btn = (Button) findViewById(R.id.btn);
		btn.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {

				if (dialog == null)
					showDialog();
				else if (!dialog.isShowing())
					showDialog();
			}
		});

	}

	private void showDialog() {
		dialog = new Dialog(instance);
		LayoutInflater inflater = LayoutInflater.from(instance);
		View v = inflater.inflate(R.layout.itmes, null);
		btnSure = (Button) v.findViewById(R.id.buttonSure);
		btnSure.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				Toast.makeText(instance, "游戏开始", Toast.LENGTH_SHORT).show();
				if (dialog != null) {
					dialog.dismiss();
				}
			}
		});
		mDownTimer = new CountDownTimer(10000, 1000) {

			public void onTick(long millisUntilFinished) {
				if (btnSure != null) {
					btnSure.setText("自动开始(" + millisUntilFinished / 1000	+ "/s)");
				}
			}

			public void onFinish() {
				if (btnSure != null) {
					btnSure.performClick();
				} 
			}
		}.start();
		dialog.setContentView(v);
		dialog.setTitle("开始游戏");
		dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {

			@Override
			public void onDismiss(DialogInterface dialog) {
				if (mDownTimer != null) {
					mDownTimer.cancel(); 
					mDownTimer = null;
				}
			}
		});
		dialog.show();
	}
}

只简单实现倒计时的效果。

package com.example.dliagdemo;

import android.app.Activity;
import android.app.Dialog;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

	private Button btnSure;
	private MainActivity instance;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		instance =this;
		Button btn = (Button)findViewById(R.id.btn);
		btn.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				showDialog();  
			}
		});

	}
	private void showDialog() {
		final Dialog dialog = new Dialog(instance); 
		LayoutInflater inflater = LayoutInflater.from(instance);
		View v =inflater.inflate(R.layout.itmes, null);
		btnSure = (Button)v.findViewById(R.id.buttonSure);
		btnSure.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				Toast.makeText(instance, "游戏开始", Toast.LENGTH_SHORT).show();
				if (dialog!=null&&dialog.isShowing()) { 
					dialog.dismiss();
				}
			}
		});
		new CountDownTimer(10000, 1000) {//总时间, 间隔时间

			public void onTick(long millisUntilFinished) {
				btnSure.setText("即将开始(" + millisUntilFinished / 1000+"/s)");
			}

			public void onFinish() {
				if (dialog!=null&&dialog.isShowing()) {
					btnSure.performClick();//点击按钮
					dialog.dismiss();
				}
			}
		}.start(); 
		dialog.setContentView(v);
		dialog.setTitle("开始游戏");
		dialog.show();
	}  
}

Android CountDownTimer倒计时简单使用