ValueAnimator 无法正常工作。从 0 而不是第一个值重新开始
ValueAnimator does not work how it should. Restarts from 0 instead of from 1st value
这是我的代码:
public static void countTextViewTravelMode(final Integer value, final TextView myView, final CrudStateCallback back){
Integer begin = 0;
try {
begin = Integer.parseInt(myView.getText().toString());
}catch (Exception e){
Log.e("","error trying to get value travel:" + e.getMessage());
}
ValueAnimator animator = ValueAnimator.ofInt(begin, value);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
String string = animation.getAnimatedValue() + "";
myView.setText(string);
}
});
animator.setEvaluator(new TypeEvaluator<Integer>() {
public Integer evaluate(float fraction, Integer startValue, Integer endValue) {
return Math.round((endValue - startValue) * fraction);
}
});
animator.setDuration(1000);
animator.start();
if(back!= null)
back.onResponse("");
}
在调用 activity 时调用一次,在 Api 调用完成获取新数据后调用一次。
第一次它从 0 变为正确的值。
第二次,它回到 0,从 0 开始,并始终停在一个随机数,该随机数小于想要的数字。
我怎样才能让它不从 0 重新开始,并且在想要的 nr 处完成?
这是错误的:
animator.setEvaluator(new TypeEvaluator<Integer>() {
public Integer evaluate(float fraction, Integer startValue, Integer endValue) {
return Math.round((endValue - startValue) * fraction);
}
});
拿出来,效果很好
这是我的代码:
public static void countTextViewTravelMode(final Integer value, final TextView myView, final CrudStateCallback back){
Integer begin = 0;
try {
begin = Integer.parseInt(myView.getText().toString());
}catch (Exception e){
Log.e("","error trying to get value travel:" + e.getMessage());
}
ValueAnimator animator = ValueAnimator.ofInt(begin, value);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
String string = animation.getAnimatedValue() + "";
myView.setText(string);
}
});
animator.setEvaluator(new TypeEvaluator<Integer>() {
public Integer evaluate(float fraction, Integer startValue, Integer endValue) {
return Math.round((endValue - startValue) * fraction);
}
});
animator.setDuration(1000);
animator.start();
if(back!= null)
back.onResponse("");
}
在调用 activity 时调用一次,在 Api 调用完成获取新数据后调用一次。 第一次它从 0 变为正确的值。 第二次,它回到 0,从 0 开始,并始终停在一个随机数,该随机数小于想要的数字。 我怎样才能让它不从 0 重新开始,并且在想要的 nr 处完成?
这是错误的:
animator.setEvaluator(new TypeEvaluator<Integer>() {
public Integer evaluate(float fraction, Integer startValue, Integer endValue) {
return Math.round((endValue - startValue) * fraction);
}
});
拿出来,效果很好