github源码下载

package com.oblivion.myapplication;
import android.support.annotation.NonNull;
import android.widget.TextView;
import java.util.LinkedList;
import java.util.Random;
/**
* author:Created by Oblivion on 2017/1/12.
*/
public class NumAnim {
private static final int COUNTPERS = 100;
public static void startAnim(TextView textV, @NonNull float num) {
startAnim(textV, num, 500);
}
public static void startAnim(TextView textV, float num, long time) {
if (num == 0) {
textV.setText(NumUtil.NumberFormat(num, 2));
return;
}
Float[] nums = splitnum(num, (int) ((time / 1000f) * COUNTPERS));
Counter counter = new Counter(textV, nums, time);
textV.removeCallbacks(counter);
textV.post(counter);
}
private static Float[] splitnum(float num, int count) {
Random random = new Random();
float numtemp = num;
float sum = 0;
LinkedList<Float> nums = new LinkedList<>();
nums.add(0f);
while (true) {
float nextFloat = NumUtil.NumberFormatFloat(
(random.nextFloat() * num * 2f) / (float) count,
2);
System.out.println("next:" + nextFloat);
if (numtemp - nextFloat >= 0) {
sum = NumUtil.NumberFormatFloat(sum + nextFloat, 2);
nums.add(sum);
numtemp -= nextFloat;
} else {
nums.add(num);
return nums.toArray(new Float[0]);
}
}
}
static class Counter implements Runnable {
private final TextView view;
private Float[] nums;
private long pertime;
private int i = 0;
Counter(TextView view, Float[] nums, long time) {
this.view = view;
this.nums = nums;
this.pertime = time / nums.length;
}
@Override
public void run() {
if (i > nums.length - 1) {
view.removeCallbacks(Counter.this);
return;
}
view.setText(NumUtil.NumberFormat(nums[i++], 2));
view.removeCallbacks(Counter.this);
view.postDelayed(Counter.this, pertime);
}
}
}
package com.oblivion.myapplication;
/**
* author:Created by Oblivion on 2017/1/12.
*/
public class NumUtil {
/**
*
* @param f 传入的float值,
* @param m 传入的执行时间
* @return
*/
public static String NumberFormat(float f,int m){
return String.format("%."+m+"f",f);
}
public static float NumberFormatFloat(float f,int m){
String strfloat = NumberFormat(f,m);
return Float.parseFloat(strfloat);
}
}