CountDownTimer

package com.daoge.widget;

import java.text.DecimalFormat;

import android.os.CountDownTimer;
import android.widget.TextView;

public class DanceWageTimer extends CountDownTimer {

	public static final int INTERVAL_ONE = 20;
	public static final int INTERVAL_TWO = 40;

	private TextView textView;
	private float totalWage;
	private int startNum = 0;//从多少开始累加
	private int increased;//每次加多少
	private int decimals;
	private int decimalFlag = 0;//记录小数部分的累加
	private long totalExecuteTime;
	private long interval;
	public DanceWageTimer(long millisInFuture, long countDownInterval) {
		super(millisInFuture, countDownInterval);
	}

	public DanceWageTimer(long millisInFuture, long countDownInterval, TextView textView, float totalWage) {
		super(millisInFuture, countDownInterval);
		this.textView = textView;
		this.totalWage = totalWage;
		this.totalExecuteTime = millisInFuture;
		this.interval = countDownInterval;
		startNum = DanceWageTimer.getStartNum(totalWage);
		decimals = (int) ((totalWage - getIntegerOfWage(totalWage)) * 100);
		increased = DanceWageTimer.getIncreased(startNum);
	}

	@Override
	public void onFinish() {
		DecimalFormat decFormat = new DecimalFormat("##0.00");
		String result = decFormat.format(totalWage);
		textView.setText(result);
	}

	@Override
	public void onTick(long arg0) {
		startNum += increased;
		if (decimalFlag < decimals) {
			if (totalExecuteTime / interval < decimals) {
				decimalFlag += 2;
			} else {
				decimalFlag++;
			}
		}
		if (decimalFlag < 10) {
			textView.setText(startNum + ".0" + decimalFlag);
		} else {
			textView.setText(startNum + "." + decimalFlag);
		}

	}

	/**
	 * @Title getTotalExecuteTime
	 * @Description 得到总共执行的时间
	 * @param totalWage
	 * @return
	 */
	public static int getTotalExecuteTime(float totalWage, int interval) {
		int wage = getIntegerOfWage(totalWage);
		int startNum = getStartNum(totalWage);
		int increased = getIncreased(startNum);
		int result = (wage - startNum) / increased * interval;
		return result;
	}

	/**
	 * @Title getStartNum
	 * @Description 得到从多少开始累加
	 * @param totalWage
	 * @return
	 */
	public static int getStartNum(float totalWage) {
		int wage = getIntegerOfWage(totalWage);
		if (wage / 10000 >= 1) {
			return 10000;
		} else if (wage / 1000 >= 1) {
			return 1000;
		} else if (wage / 100 >= 1) {
			return 100;
		} else if (wage / 10 >= 1) {
			return 10;
		} else {
			return 0;
		}
	}

	/**
	 * @Title getIncreased
	 * @Description 得到每次加多少
	 * @param start
	 * @return
	 */
	private static int getIncreased(int start) {
		int increased = 0;
		if (start >= 10000) {
			increased = 1299;
		} else if (start >= 1000) {
			increased = 99;
		} else if (start >= 100) {
			increased = 7;
		} else if (start >= 10) {
			increased = 1;
		} else {
			increased = 1;
		}
		return increased;
	}

	public static int getIntegerOfWage(float totalWage) {
		return (int) totalWage;
	}

}

  

时间: 2024-10-31 21:49:53

CountDownTimer的相关文章

[Android Pro] CountDownTimer倒计时

定时执行在一段时候后停止的倒计时,在倒计时执行过程中会在固定间隔时间得到通知(译者:触发onTick方法),下面的例子显示在一个文本框中显示一个30s倒计时: new CountdownTimer(30000, 1000) { public void onTick(long millisUntilFinished) { mTextField.setText("seconds remaining: " + millisUntilFinished / 1000); } public voi

android CountDownTimer

最近做项目用到了到计时功能,发现了一个很好用的内建类CountDownTimer.当然,这种效果可以用TimerTask + Timer来实现.只是我个人觉得CountDownTimer显得更简洁,易用. 下面来看一下developer文档的解释,以及示例代码: Schedule a countdown until a time in the future, with regular notifications on intervals along the way. Example of sho

Android倒计时功能的实现(CountDownTimer)

以前编程的时候,遇到倒计时的功能时,经常自己去写,但其实Android已经帮封装好了一个倒计时类CountDownTimer,其实是将后台线程的创建和Handler队列封装成为了一个方便的类调用. 说明: CountDownTimer timer = new CountDownTimer(30000, 1000)中,第一个参数表示总时间,第二个参数表示间隔时间. 意思就是每隔一秒会回调一次方法onTick,然后30秒之后会回调onFinish方法. package com.androidcoun

Android基础之——CountDownTimer类,轻松实现倒计时功能

在发现这个类之前,一直是用的handler,子线程发消息,UI线程进行倒计时的显示工作.前几天在做一个倒计时显示的时候发现了这个类,用起来很方便 翻看了下源码,内部已经帮我们实现了handler的子线程操作 CountDownTimer这个类用起来很简单,两个参数,几句代码搞定,如下: CountDownTimer(long millisInFuture, long countDownInterval) 构造函数有两个参数,第一个millisInFuture是指要倒计时的总时间,单位是long

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倒计时简单使用

CountDownTimer: Schedule a countdown until a time in the future, with regular notifications on intervals along the way. 倒计时这个类比较简单,可以学习这样来设计类,下面看这个类的一个简单应用的例子: 这么个小例子也需要优化,优化之前什么也没考虑只实现了效果, 简单优化下增加了了多次点击Dlialog不重复创建和取消countdowntimer任务的代码: 简单优化后: pack

倒计时的CountDownTimer

定时执行在一段时候后停止的倒计时,在倒计时执行过程中会在固定间隔时间得到通知(译者:触发onTick方法),下面的例子显示在一个文本框中显示一个30s倒计时: Java代码   new CountdownTimer(30000, 1000) { public void onTick(long millisUntilFinished) { mTextField.setText("seconds remaining: " + millisUntilFinished / 1000); } p

用CountDownTimer实现获取手机验证码效果

简述: CountDownTimer类用来实现倒计时效果. 构造方法接收两个参数,第一个设置倒计时长度,第二个设置倒计时间隔. 用此方法时只需复写onTick()和onFinish()这两个方法即可. 示例: package com.example.androidtest; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.os.CountDow

CountDownTimer完整具体演示样例

MainActivity例如以下: package cc.cv; import android.os.Bundle; import android.os.CountDownTimer; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.app.Activity; /** * Demo演示样例: * CountDownTim

Android CountDownTimer倒计时器

示例代码如下: int totalTime = 10000; // 总时间 int tickTime = 100; // 滴答时间 CountDownTimer timer = new CountDownTimer(totalTime, tickTime) { @Override public void onTick(long millisUntilFinished) { // 每tickTime执行一次此方法. // millisUntilFinished为距离结束的毫秒数. // 如果单纯执