如何在动画制作时修改动画视图?

时间:2013-05-24 21:38:17

标签: android animation view listener

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

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也可以。如果我将代码更改为监听器(如代码所示),则动画根本不起作用!

1 个答案:

答案 0 :(得分: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动画。正是我想要的!