如何让Android中的文字淡入淡出?

And*_*bel 47 animation android

我有一段文字,当点击一个按钮时,我希望该文本淡出,更改为其他文本,然后淡入.我有一些代码,但它不会淡出动画只是淡入.

    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);

        }
    });
Run Code Online (Sandbox Code Playgroud)

ebo*_*oix 80

在将动画设置为out之后,您似乎正在设置动画.这使得只有"in"动画才能工作.

要使第二个动画在第一个动画之后立即开始,您可以为第一个动画添加一个侦听器:

out.setAnimationListener(new AnimationListener() {

    @Override
    public void onAnimationEnd(Animation animation) {
        mSwitcher.setText("New Text");
        mSwitcher.startAnimation(in);

    }
});
Run Code Online (Sandbox Code Playgroud)

然后,在您的onClick()方法中:

public void onClick(View v) {

    mSwitcher.startAnimation(out);

}
Run Code Online (Sandbox Code Playgroud)

这应该够了吧.


另一种方法是使用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);
Run Code Online (Sandbox Code Playgroud)

然后,开始out,而不是开始as.

我希望这有帮助!

  • 很好的答案!:) (2认同)