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命令行---13

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

  2. 让你的qstardict读单词

    作为编程行当的人员,英语是躲不掉的,很多资料英文更加有效,字典就显得尤为重要,我希望字典不但能查到中文意思,还能发生,那就跟我来吧: 一.安装字典程序: pacman -S qstartdic sox ...

  3. 网络编程socket-SocketServer-FTP

    16章 网络编程?应该是讲网络之间如何编程来进行通信的章节 16.1.1 客户端/服务器架构?客户端请求访问,服务器端监听请求,处理请求,进行相应的模式16.1.2 客户端/服务器编程?服务器端:创建 ...

  4. java中Map的entrySet 和keySet的使用

    存储这样的一个数据关系结构  使用嵌套map存储 可以通过调用  entrySet方法  或者 keySet方法 进行迭代或者增强for循环 便利输出 这里演示 迭代器的方式进行遍历 package ...

  5. 前端优化之Combo Handler

    Combo Handler来合并CSS/JS文件 背景 Combo Handler是Yahoo!开发的一个Apache模块,它实现了开发人员简单方便地通过URL来合并JavaScript和CSS文件, ...

  6. python-re之中文匹配

    #coding=utf-8 import re import chardet#检测网页编码形式的模块 p = re.compile(r'\d+') print p.findall('one1two2t ...

  7. Java爬虫系列之实战:爬取酷狗音乐网 TOP500 的歌曲(附源码)

    在前面分享的两篇随笔中分别介绍了HttpClient和Jsoup以及简单的代码案例: Java爬虫系列二:使用HttpClient抓取页面HTML Java爬虫系列三:使用Jsoup解析HTML 今天 ...

  8. 基于WPF系统框架设计(9)-多值绑定之IMultiValueConverter

    应用场景 我想把View层的一个布局控件和功能按钮传到ViewModel层,达到动态变更布局,同时灵活获取功能按钮的属性,让View和ViewModel完全分离,而不受View层影响. 最后我想到使用 ...

  9. 【报错】项目启动,仅仅报错 One or more listeners failed to start. Full details will be found in the appropriate container log file

    今天spring4.3.13 项目,整合ActiveMQ的时候,项目启动在自动部署到tomcat下的时候,不能正常的部署,仅仅报错如下: Connected to server [-- ::,] Ar ...

  10. Codis的了解和操作

    1.Codis的基本架构 2.Codis各组件 Codis-server:就是redis服务,可以使用codis修改的reids和原生的redis Codis-proxy:客户端连接的代理服务,客户端 ...