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();
	}
}
时间: 2024-10-25 00:01:52

Android CountDownTimer倒计时简单使用的相关文章

android CountDownTimer 倒计时

在倒计时通过自己曾用所有的时间handle延迟发送,实现.但最近Android其中发现,一类,它是Android倒计时提供实现类.使用简单,原则上也通过handle对于倒计时: 一个简单的小李子: private TextView text; private CountDownTimer timer = new CountDownTimer(10000, 1000) { @Override public void onTick(long millisUntilFinished) { text.s

Android基础之CountDownTimer 倒计时类

app常用的60s倒计时计时功能: private static final int TIME_LIMIT = 60; private void initView() { // 相关控件 mResend = (TextView) findViewById(R.id.resend); // 重新发送btn mResend.setOnClickListener(this); mTimeLimit = (TextView) findViewById(R.id.time_limit); // 倒计时秒数

android中倒计时控件CountDownTimer分析

android中倒计时控件CountDownTimer分析 1 示例代码 new CountDownTimer(10000, 1000) { public void onTick(long millisUntilFinished) { LogUtil.i(TAG, "seconds remaining: " + millisUntilFinished / 1000); } public void onFinish() { LogUtil.i(TAG, "done!"

Android ExpandableListView的简单应用

Expandablelistview1Activity.java package com.wangzhu.demoexpandablelistview; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.widg

【原创】android——SQLite实现简单的注册登陆(已经美化)

1,Main_activity的xmL配置 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_pa

android自定义倒计时控件示例

这篇文章主要介绍了Android秒杀倒计时自定义TextView示例,大家参考使用吧 自定义TextView控件TimeTextView代码: 复制代码 代码如下: import android.content.Context;import android.content.res.TypedArray;import android.graphics.Paint;import android.text.Html;import android.util.AttributeSet;import and

Android HttpGet() 请求简单入门实例

HttpClient httpclient = new DefaultHttpClient(); String url = "http://example.com"; List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add( new BasicNameValuePair( "param", "value" ) ); URI uri =

【android】Socket简单用法

原文地址:http://www.cnblogs.com/harrisonpc/archive/2011/03/31/2001565.html Socket通常也称做”套接字“,用于描述IP地址和端口,废话不多说,它就是网络通信过程中端点的抽象表示.值得一提的是,Java在包java.net中提供了两个类Socket和ServerSocket,分别用来表示双向连接的客户端和服务端.这是两个封装得非常好的类,使用起来很方便! 下面将首先创建一个SocketServer的类作为服务端如下,该服务端实现

Android Bundle传递简单数据、对象数据

Android开发过程中进程遇到组件之间.进程之间等数据的传递,数据传递有很多种,其中使用Bundle传递非常方便. Bundle可以传递多种数据,是一种类似map的key-value数据结构 简单的调用如下所示 Bundle bundle=new Bundle(); bundle.put***(key,value) 但是有时候需要我们传递一个对象,做法就是先把该对象使用serializable序列化 public class Book implements Serializable{ } 然后