如何在textView更改文本时为FadeOut和FadeIn设置动画

时间:2010-08-24 08:27:10

标签: android animation fadein fadeout textwatcher

我尝试在changeText上为TextView设置动画 但总是看到动画的一个方向,我只看到淡出

我尝试的是: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 个答案:

答案 0 :(得分:6)

TextSwitcher正是您所寻找的。只需使用他们的setInAnimation()setOutAnimation即可。如果您按setText()

更改文字,动画将自动运行

答案 1 :(得分:1)

通过代码的外观,您可以告诉TextView在更改后淡出而不是淡入。

此外,我不确定此代码的效果如何,因为beforeTextChanged仅在文本更改之前被调用。没有足够的时间在beforeTextChanged上发生任何动画,因为它会立即被onTextChanged中的代码替换

修改** 回复以下评论

因此,为了让textview淡出然后淡入新内容,我会以编程方式启动fadeOut动画,而不是使用Textwatcher。我会给fadeOut动画一个AnimationListener,然后在animationEnd上你可以在开始你的fadeIn动画之前设置新文本。