2015-09-04 1 views
-3

У меня есть TextView в Android, который отображает значение float. Я хочу показать анимацию, в которой ее значение увеличивается от 0 до заданного значения поплавка за заданное время. Мне нужны цифры после десятичной точки для анимации.Android: анимация TextView для увеличения его стоимости (поплавок) через время в Android

Кроме того, я попробовал следующее решение here от Pedro Oliveira, но он работает только для значений int. Меня больше волнует оживление значений float.

public void animateTextView(int initialValue, int finalValue, final TextView textview) { 
    DecelerateInterpolator decelerateInterpolator = new DecelerateInterpolator(0.8f); 
    int start = Math.min(initialValue, finalValue); 
    int end = Math.max(initialValue, finalValue); 
    int difference = Math.abs(finalValue - initialValue); 
    Handler handler = new Handler(); 
    for (int count = start; count <= end; count++) { 
     int time = Math.round(decelerateInterpolator.getInterpolation((((float) count)/difference)) * 100) * count; 
     final int finalCount = ((initialValue > finalValue) ? initialValue - count : count); 
     handler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       textview.setText(finalCount + ""); 
      } 
     }, time); 
    } 
+1

Итак, что вы пробовали? С чем вы столкнулись? Таймер? Форматирование строк? Чтобы избежать получения этого большого количества голосов, я рекомендую предоставить больше информации в будущем. Сейчас вопрос выглядит так: «У меня эта проблема и я ничего не пробовал, просто скажи мне решение». – DarkDust

+0

Самый простой способ - использовать «ObjectAnimator» – pskink

+0

Спасибо за головы. Я понимаю, что я не предоставил много информации. Но после поворота с решением, данным в другом вопросе, я нашел ответ, который я публикую ниже. – sri

ответ

8

Я нашел ответ на this вопрос. Ответ Ахмедзаха отлично работал для меня, я немного изменил код.

public void animateTextView(float initialValue, float finalValue, final TextView textview) { 

    ValueAnimator valueAnimator = ValueAnimator.ofFloat(initialValue, finalValue); 
    valueAnimator.setDuration(1500); 

    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
     @Override 
     public void onAnimationUpdate(ValueAnimator valueAnimator) { 

      textview.setText(valueAnimator.getAnimatedValue().toString()); 

     } 
    }); 
    valueAnimator.start(); 

} 

Я сомневаюсь, что этот вопрос будет получить какие-либо дополнительные мнения в связи с числом downvotes, но я надеюсь, что это поможет кому-то отчаянно нуждается в ответ :).

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