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

  

CountDownTimer的更多相关文章

  1. Android使用CountDownTimer倒计时

    1.布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android ...

  2. 拓展 Android 原生 CountDownTimer 倒计时

    拓展 Android 原生 CountDownTimer 倒计时 [TOC] CountDownTimer 在系统的CountDownTimer上进行的修改,主要是拓展了功能,当然也保留了系统默认的模 ...

  3. [Android Pro] CountDownTimer倒计时

    定时执行在一段时候后停止的倒计时,在倒计时执行过程中会在固定间隔时间得到通知(译者:触发onTick方法),下面的例子显示在一个文本框中显示一个30s倒计时: new CountdownTimer(3 ...

  4. Android CountDownTimer倒计时器的使用

    http://blog.csdn.net/freesonhp/article/details/25904047 在平时我们编程的时候,经常会用到倒计时这个功能,很多人不知道Android已经帮封装好了 ...

  5. Android CountDownTimer 倒计时

    摘自:http://www.cnblogs.com/over140/archive/2011/12/20/2294220.html 继承关系 public abstract class CountDo ...

  6. Android基础之CountDownTimer 倒计时类

    app常用的60s倒计时计时功能: private static final int TIME_LIMIT = 60; private void initView() { // 相关控件 mResen ...

  7. android CountDownTimer

    最近进行的项目使用的定时功能,我发现了一个非常容易使用内置类CountDownTimer.当然,可以使用这种效果TimerTask + Timer为了实现.只是我个人的意见CountDownTimer ...

  8. Android利用CountDownTimer类实现倒计时功能

    public class MainActivity extends Activity { private MyCount mc; private TextView tv; @Override publ ...

  9. Android中使用Handler以及CountDownTimer实现包含倒计时的闪屏页面

    上一篇博文<Android中Handler使用浅析>通过实现倒计时闪屏页面的制作引出了Handler的使用方法以及实现原理,博文末尾也提到了实现过程中的Bug,有兴趣的朋友可以点击链接回去 ...

  10. android 定时器(Handler Timer Thread AlarmManager CountDownTimer)

    Android实现定时任务一般会使用以上(Handler Timer Thread AlarmManager CountDownTimer)五种方式.当然还有很多组合使用(比如Handler+Thre ...

随机推荐

  1. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---52

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  2. linux内核情景分析之命名管道

    管道是一种"无名","无形文件,只可以近亲进程使用,不可以再任意两个进程通信使用,所以只能实现"有名","有形"的文件来实现就可以 ...

  3. linux私房菜-读书笔记

    第零章:计算机概论 计算机:接受用户输入指令和数据,经过中央处理器的数据和逻辑单元运算处理器处理后,以产生或存储成有用的信息. 计算机硬件的五大单元:输入单元.输出单元.CPU内部控制单元.算术逻辑单 ...

  4. Python 函数的一般形式及参数

    #!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/11/01 21:46 # @Author : lijunjiang # @Fi ...

  5. 洛谷——P1130 红牌

    题目描述 某地临时居民想获得长期居住权就必须申请拿到红牌.获得红牌的过程是相当复杂 ,一共包括N个步骤.每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件.为了加快进程,每一步政府都派了 ...

  6. python的列表元组字典集合比较

    定义 方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner','list'],7- ...

  7. UVA 11100 The Trip, 2007 水题一枚

    题目链接:UVA - 11100 题意描述:n个旅行箱,形状相同,尺寸不同,尺寸小的可以放在尺寸大的旅行箱里.现在要求露在最外面的旅行箱的数量最少的同时满足一个旅行箱里放的旅行箱的数量最少.求出这样满 ...

  8. Jenkins集成java非maven/ant项目的打包思路

    打包的思路如下: 1.使用javac命令对代码进行编译,比如递归编译整个项目的java代码.(注意:需要一一对应引用的jar包) 2.输出并整理war包的文件夹结构目录,参考:http://www.c ...

  9. AlphaGo GITHUB

    AlphaGo GITHUB https://github.com/Rochester-NRT/AlphaGo

  10. 228. 汇总区间(leetcode)

    #整体思路:使用堆栈,在Python中可以使用列表代替:如果a[i]-a[i-1]==1,就要将a[i]合并到之前的区间里,#所以我们队首位元素开辟一个区间为[a[0],a[0]]#做最后汇总时候,如 ...