0

我尝试使用以下代码修改文本视图的动画内容,并使用其动画侦听器:

final String text = [...]; 
animationGoOut.setAnimationListener(new AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {}
    @Override
    public void onAnimationRepeat(Animation animation) {}
    @Override
    public void onAnimationEnd(Animation animation) {
        myTextView.setText(text);
        myTextView.startAnimation(animationGoIn);
    }
});
myTextView.startAnimation(animationGoOut);

animationGoOut将对象平移到屏幕外并将其 alpha 减小为 0。 animationGoIn将对象转换为其原始位置并将其 alpha 设置为 1。我希望 TextView 输出文本,然后再输入另一个文本。

如果我删除指令

myTextView.setText(text);

动画效果很好,如果我在动画开始之前更改 textView 效果也很好。如果我将代码更改为侦听器(如代码所示),动画根本不起作用!

4

1 回答 1

0

我使用 TextSwitcher 对象解决了这个问题。

在布局上,我有一个 TextSwitcher(在应该是 TextView 的地方)。然后这是我的代码:

TextSwitcher mTextSwitcher = null;

@Override
protected void onCreate(...) {
    mTextSwitcher = findViewById(R.id.textSwitcher);
    Animation animIn = ...;
    Animation animOut = ...;
    mTextSwitcher.setFactory(this);
    mTextSwitcher.setInAnimation(animIn);
    mTextSwitcher.setOutAnimation(animOut);
}

private void changeText(String nextText) {
    mTextSwitcher.setText(nextText);
}

@Override
public View makeView() {
    TextView t = new TextView(this);
    t.setGravity(Gravity.CENTER);
    t.setTextSize(TypedValue.COMPLEX_UNIT_SP, 22);  // the size of a LargeText text view
    return t;
}

每次我调用 mTextSwitcher.setText(String) 时,它都会执行 out 动画,然后执行带有新文本的 in 动画。正是我想要的!

于 2013-05-25T08:56:40.023 回答