Android Простая TextView Анимация - PullRequest
7 голосов
/ 31 января 2012

У меня есть TextView, который я хотел бы отсчитать (3 ... 2 ... 1 ... что-то происходит).

Чтобы было немного интереснее, я хочу, чтобы каждая цифра начиналась с полной непрозрачности и постепенно переходила в прозрачность.

Есть ли простой способ сделать это?

Ответы [ 3 ]

13 голосов
/ 31 января 2012

Попробуйте что-то вроде этого:

 private void countDown(final TextView tv, final int count) {
   if (count == 0) { 
     tv.setText(""); //Note: the TextView will be visible again here.
     return;
   } 
   tv.setText(String.valueOf(count));
   AlphaAnimation animation = new AlphaAnimation(1.0f, 0.0f);
   animation.setDuration(1000);
   animation.setAnimationListener(new AnimationListener() {
     public void onAnimationEnd(Animation anim) {
       countDown(tv, count - 1);
     }
     ... //implement the other two methods
   });
   tv.startAnimation(animation);
 }

Я просто набрал его, поэтому он может не скомпилироваться как есть.

4 голосов
/ 24 июня 2014

Для этого я использовал более обычную анимацию в стиле Android:

        ValueAnimator animator = new ValueAnimator();
        animator.setObjectValues(0, count);
        animator.addUpdateListener(new AnimatorUpdateListener() {
            public void onAnimationUpdate(ValueAnimator animation) {
                view.setText(String.valueOf(animation.getAnimatedValue()));
            }
        });
        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();

Вы можете играть со значениями 0 и count, чтобы счетчик перешел с любого числа на любое числои поиграйте с 1000, чтобы установить продолжительность всей анимации.

Обратите внимание, что это поддерживает Android API уровня 11 и выше, но вы можете использовать удивительный проект nineoldandroids , чтобы сделатьлегко совместим с предыдущими версиями.

2 голосов
/ 28 февраля 2014

Взгляните на CountDownAnimation.

Сначала я попробовал решение @dmon, но, поскольку каждая анимация начинается в конце предыдущей, у вас возникает задержка после нескольких вызовов.

Итак, я реализовал класс CountDownAnimation, который использует Handler и функцию postDelayed. По умолчанию он использует альфа-анимацию, но вы можете установить любую анимацию. Вы можете скачать проект здесь .

...