Как анимировать FadeOut и FadeIn, пока textView изменяет текст - PullRequest
2 голосов
/ 24 августа 2010

я пытаюсь оживить TextView на changeText Но всегда вижу только одно направление анимации, я вижу только затухание

Что я пытаюсь сделать: beforChange = fadeOut и onChange или после fadein

вот мой код в методе onCreate моей деятельности:

    final Animation out = new AlphaAnimation(1.0f, 0.0f);
    out.setDuration(1000);

    final Animation in = new AlphaAnimation(0.0f, 1.0f);
    in.setDuration(1000);


    bidFirst.setAnimation(out);
    bidMiddle.setAnimation(out);
    bidLast.setAnimation(out);

    TextWatcher bidWatcher = new TextWatcher() {
      public void onTextChanged(CharSequence s, int start, int before, int count) {
        in.startNow();
        bidFirst.setAnimation(out);
        bidMiddle.setAnimation(out);
        bidLast.setAnimation(out);
      }

      public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        out.startNow();
        bidFirst.setAnimation(in);
        bidMiddle.setAnimation(in);
        bidLast.setAnimation(in);
      }

      public void afterTextChanged(Editable s) {
      }
    };
    bidFirst.addTextChangedListener(bidWatcher);
    bidMiddle.addTextChangedListener(bidWatcher);
    bidLast.addTextChangedListener(bidWatcher);

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

То, что у меня сейчас есть: на каждом setText измененный текст только FadeOut, но после того, как текст изменился и никогда FadeIn!

Ответы [ 2 ]

6 голосов
/ 24 августа 2010

TextSwitcher - это именно то, что вы ищете. Просто используйте их setInAnimation() и setOutAnimation. Чем анимация будет работать автоматически, если вы измените текст на setText()

1 голос
/ 24 августа 2010

Судя по вашему коду, вы говорите TextView постепенно исчезать после изменения, а не постепенно.

Также я не уверен, насколько эффективным будет этот код, поскольку beforeTextChanged вызывается только за несколько секунд до изменения текста. Просто не будет достаточно времени, чтобы анимация произошла до beforeTextChanged, поскольку она будет немедленно заменена вашим кодом в onTextChanged

Редактировать ** Ответить на комментарий ниже

Таким образом, чтобы текстовое представление исчезло, а затем исчезло с новым контентом, я бы программно запустил анимацию fadeOut вместо использования Textwatcher. Я бы дал анимации fadeOut AnimationListener , а на анимацииEnd вы можете установить новый текст перед запуском анимации fadeIn.

...