我有一段文本,当单击按钮时,我希望该文本淡出,更改为其他文本,然后淡入。我有一些代码,但它不会只执行淡出动画淡入。
final TextView mSwitcher = (TextView) findViewById(R.id.bookContent);
mSwitcher.setText("old text");
final Animation in = new AlphaAnimation(0.0f, 1.0f);
in.setDuration(3000);
final Animation out = new AlphaAnimation(1.0f, 0.0f);
out.setDuration(3000);
Button moveOn = (Button) findViewById(R.id.moveOn);
moveOn.setOnClickListener( new OnClickListener() {
public void onClick(View v) {
mSwitcher.startAnimation(out);
mSwitcher.setText("new text");
mSwitcher.startAnimation(in);
}
});
最佳答案
您似乎在将动画设置为 out 之后立即将其设置为 in。这使得只有“in”动画起作用。
要使第二个动画在第一个动画之后立即开始,您可以为您的第一个动画添加一个监听器:
out.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
mSwitcher.setText("New Text");
mSwitcher.startAnimation(in);
}
});
然后,在您的 onClick()
方法中:
public void onClick(View v) {
mSwitcher.startAnimation(out);
}
这应该可以解决问题。
另一种方法是使用AnimationSet
。
final Animation in = new AlphaAnimation(0.0f, 1.0f);
in.setDuration(3000);
final Animation out = new AlphaAnimation(1.0f, 0.0f);
out.setDuration(3000);
AnimationSet as = new AnimationSet(true);
as.addAnimation(out);
in.setStartOffset(3000);
as.addAnimation(in);
然后,不要启动 out
,而是启动 as
。
我希望这会有所帮助!
关于android - 如何在Android中使文本淡入淡出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8627211/