安卓倒计时的实现


我们在做项目开发的时候,常常会用到倒计时的功能,比如在做商品交易的系统,秒杀抢购的功能更需要用到倒计时的功能,下面我们直接上源码:
package com.example.daojishi;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

@SuppressLint("SimpleDateFormat")
public class MainActivity extends Activity
{
	private TextView day;
	private TextView hour;
	private TextView minute;
	private TextView seconds;

	Timer timer = new Timer();

	private static String endDate = "2030-03-25 10:10:10";

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

		day = (TextView) findViewById(R.id.index_miaosha_day);
		hour = (TextView) findViewById(R.id.index_miaosha_hour);
		minute = (TextView) findViewById(R.id.index_miaosha_min);
		seconds = (TextView) findViewById(R.id.index_miaosha_seconds);

		timer.schedule(task, 1000, 1000); // timeTask
	}

	/**
	 * 
	 * 
	 */
	public static String[] getDiff(String nowDate)
	{
		String[] diffStr = new String[] {"0", "0", "0", "0"};

		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

		Date d1 = null;
		Date d2 = null;

		try
		{
			d1 = format.parse(endDate);
			d2 = format.parse(nowDate);

			// 毫秒ms
			long diff = d1.getTime() - d2.getTime();

			long diffSeconds = diff / 1000 % 60;
			long diffMinutes = diff / (60 * 1000) % 60;
			long diffHours = diff / (60 * 60 * 1000) % 24;
			long diffDays = diff / (24 * 60 * 60 * 1000);

			diffStr = new String[] {diffDays + "", diffHours + "", diffMinutes + "", diffSeconds + ""};


			System.out.println("diffStr:" + diffStr);
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}

		return diffStr;
	}

	/**
	 * 用于获取系统的当前日期(具体到时分秒)
	 */
	public static String getSystemCurrentDateDetail()
	{
		SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

		String strCurrentDate = formater.format(new Date());

		return strCurrentDate;
	}

	TimerTask task = new TimerTask()
	{
		@Override
		public void run()
		{
			runOnUiThread(new Runnable()
			{ // UI thread
				@Override
				public void run()
				{
					String nowDate = getSystemCurrentDateDetail();
					
					System.out.println("nowDate:" + nowDate);
					
					String[] diff = getDiff(nowDate);
					day.setText(diff[0]);
					hour.setText(diff[1]);
					minute.setText(diff[2]);
					seconds.setText(diff[3]);
					
					for (int i = 0; i < diff.length; i++)
					{
						System.out.print("diff[" + i + "]" + diff[i]);
					}
					if (diff[0].equals("0") && diff[1].equals("0")  && diff[2].equals("0")  && diff[3].equals("0"))
					{
						timer.cancel();
						//tv.setText("抢购活动已经结束");
					}
				}
			});
		}
	};
}


主要用到了Timer类和TimerTask类。Timer相当于一个定时器,每隔一秒执行TimerTask任务,执行时间也为1秒,获取当前时间与到期时间的差值,显示在一个文本框上。

因为布局仅仅是一个TextView,所以这里不再给出。



运行的效果截图如下面所示。因为比较简单,这里不再给出源码。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值