android - 如何在Android中使文本淡入淡出?

标签 android animation

我有一段文本,当单击按钮时,我希望该文本淡出,更改为其他文本,然后淡入。我有一些代码,但它不会只执行淡出动画淡入。

    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/

相关文章:

ios - iPad 推特中的纸张折叠/展开效果

android - 我是否需要每帧都在 Canvas 上重绘所有对象?

ios - CATextLayer-如何禁用隐式动画?

c# - WPF 动画 : Detect if any animation is in process?

android - "already added"ormlite 和 gradle 异常

image - matplotlib imshow():如何制作动画?

java - 如何让下面代码中的水果重复出现?

android.hardware.display.DisplayManager.getDisplays() 没有返回连接到 chromebook 的外接显示器

Android GPS list 不起作用

java - Android 在 2 个 Activity 之间传递 Intent 增量值