我尝试使用动画监听器修改文本视图的内容,并使用以下代码修改文本视图的内容:
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也可以。如果我将代码更改为监听器(如代码所示),则动画根本不起作用!
答案 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动画。正是我想要的!