2016-04-28 5 views
0

Это мой код:ValueAnimator не работает, как это должно быть. Перезапуск от 0, а не с 1-го значения

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(""); 
} 

Это вызывается один раз, когда активность вызывается, и сразу же после вызова Апи, чтобы получить новые данные сделано. Первый раз он переходит от 0 до правильного значения. Второй раз он возвращается к 0, начинается с 0 и всегда останавливается со случайным числом, которое меньше требуемого. Как я могу заставить его не перезапускать с 0, а также завершить финализацию нужного номера?

ответ

0

Это было неправильно:

animator.setEvaluator(new TypeEvaluator<Integer>() { 
    public Integer evaluate(float fraction, Integer startValue, Integer endValue) { 
     return Math.round((endValue - startValue) * fraction); 
    } 
}); 

принял его, и он работает как шарм

 Смежные вопросы

  • Нет связанных вопросов^_^