2

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

我尝试的是:beforChange = fadeOut and onChange or after 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!?

4

2 回答 2

6

TextSwitcher 正是您正在寻找的。只需使用他们的setInAnimation()and setOutAnimation。如果您更改文本,动画将自动运行setText()

于 2010-08-24T09:08:29.620 回答
1

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

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

编辑**回复下面的评论

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

于 2010-08-24T08:52:32.687 回答