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;
} }
CountDownTimer的更多相关文章
- Android使用CountDownTimer倒计时
1.布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android ...
- 拓展 Android 原生 CountDownTimer 倒计时
拓展 Android 原生 CountDownTimer 倒计时 [TOC] CountDownTimer 在系统的CountDownTimer上进行的修改,主要是拓展了功能,当然也保留了系统默认的模 ...
- [Android Pro] CountDownTimer倒计时
定时执行在一段时候后停止的倒计时,在倒计时执行过程中会在固定间隔时间得到通知(译者:触发onTick方法),下面的例子显示在一个文本框中显示一个30s倒计时: new CountdownTimer(3 ...
- Android CountDownTimer倒计时器的使用
http://blog.csdn.net/freesonhp/article/details/25904047 在平时我们编程的时候,经常会用到倒计时这个功能,很多人不知道Android已经帮封装好了 ...
- Android CountDownTimer 倒计时
摘自:http://www.cnblogs.com/over140/archive/2011/12/20/2294220.html 继承关系 public abstract class CountDo ...
- Android基础之CountDownTimer 倒计时类
app常用的60s倒计时计时功能: private static final int TIME_LIMIT = 60; private void initView() { // 相关控件 mResen ...
- android CountDownTimer
最近进行的项目使用的定时功能,我发现了一个非常容易使用内置类CountDownTimer.当然,可以使用这种效果TimerTask + Timer为了实现.只是我个人的意见CountDownTimer ...
- Android利用CountDownTimer类实现倒计时功能
public class MainActivity extends Activity { private MyCount mc; private TextView tv; @Override publ ...
- Android中使用Handler以及CountDownTimer实现包含倒计时的闪屏页面
上一篇博文<Android中Handler使用浅析>通过实现倒计时闪屏页面的制作引出了Handler的使用方法以及实现原理,博文末尾也提到了实现过程中的Bug,有兴趣的朋友可以点击链接回去 ...
- android 定时器(Handler Timer Thread AlarmManager CountDownTimer)
Android实现定时任务一般会使用以上(Handler Timer Thread AlarmManager CountDownTimer)五种方式.当然还有很多组合使用(比如Handler+Thre ...
随机推荐
- 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---52
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- Manjaro Linux下使用powerline
作为linux的重度使用者,vim和bash的使用也非常平凡,总想有点不同,感觉千篇一律的提示符已经看的厌倦了.作为广大网友的推荐的powerline可以为bash和vim的提示符美化增色不少.下面请 ...
- C# 的 String.CompareTo Equals和==的比较
String.CompareTo 语法 public int CompareTo( string strB) 返回值 小于 0,实例小于参数 strB: 0,实例等于参数 strB: 大于 0, ...
- 终极CRUD-3-用Jackson解析json
目录 1 jackson json基本介绍和使用 2 jackson 常用的注解 2.1@JsonProperty 2.2 @JsonIgnore 2.3 @JsonIgnoreProperties ...
- chrome禁用JS
有一些网站不允许文本选择,对于我这种伸手党实在是很不友好.当然像这类的功能,应该是用JS来控制. chrome的话,JS禁用可以在地址栏旁边的一个下拉列表那里选.
- Akka Stream之Graph
最近在项目中需要实现图的一些操作,因此,初步考虑使用Akka Stream的Graph实现.从而学习了下: 一.介绍 我们知道在Akka Stream中有三种简单的线性数据流操作:Source/Flo ...
- Java获取路径的方法分析详解(Application/Web)
1.利用System.getProperty()函数获取当前路径: System.getProperty("user.dir");//user.dir用户当前的工作目录,输出:D: ...
- 使用nginx实现的灰度发布思路研究(待实践)
灰度发布也叫 A/B 测试,原理是一套系统在实现了负载均衡,全国节点都部署了系统之后,可以在新功能上线后,让一小部分用户先使用,从中收集使用信息来做对比和发现bug,及时调整,最终分发到全国的节点. ...
- iOS 5的文件存储策略应对
苹果在iOS 5系统时,对app的文件存储提出了新的要求.从它的guildline来看,是推荐开发者尽量把app生成的文件放在Caches目录下的.原文如下: Only user-generated ...
- Linux下搭建PHP开发环境(LAMP)
LAMP:Linux+Apache+Mysql/MariaDB+Perl/PHP/Python 一键安装方法如下: 注:Ubuntu下可使用sudo su 命名切换到root用户. 开始安装之前,先执 ...