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;
	}

}

  

posted on 2015-02-09 17:38  jiezzy  阅读(187)  评论(0编辑  收藏  举报