0

我正在尝试在 Android 中应用淡入淡出过渡。

你能告诉我为什么我只看到褪色片刻,然后它恢复到原始的 alpha 吗?

我已添加setFillAfter(true);以保持图像消失。

我努力了:

                animation = android.view.animation.AnimationUtils
                        .loadAnimation(AppService.getAppContext(),
                                com.waze.R.anim.fade_out);

                animation.setInterpolator(new AccelerateInterpolator());
                animation.setFillAfter(true);
                boxImage_left.startAnimation(animation);

有了这个:

<set xmlns:android="http://schemas.android.com/apk/res/android"
           android:fillAfter="true">
  <alpha android:fromAlpha="0.0"
         android:toAlpha="1.0"
         android:repeatCount="0"
         android:duration="500"/>
</set>

并且:

                AlphaAnimation alpha = new AlphaAnimation(0,1);
                alpha.setDuration(600);
                animation.setInterpolator(new AccelerateInterpolator());
                animation.setFillAfter(true);
                vImage_left.startAnimation(alpha); 
4

2 回答 2

0

让您的活动实现 AnimationListener,并在动画结束后设置可见性。

public class YourActivity extends Activity implements AnimationListener
{
    @override
    onCreate(Bundle x)
    {
        ...
        // set animation listener
        animFadein.setAnimationListener(this);
        animFadeOut.setAnimationListener(this);

    }
    @Override
    public void onAnimationEnd(Animation animation)
    {
        if (animation == animFadein)
        {
            view.setVisibility(View.VISIBLE);
        }
         if (animation == animFadeOut)
        {
            view.setVisibility(View.INVISIBLE);
        }
    }
}

并为动画速度修改动画持续时间和插值器

于 2013-10-30T11:09:10.520 回答
0

您可以使用LinearInterpolator而不是AccelerateInterpolator

我知道为时已晚,但会帮助别人。

于 2019-02-12T12:15:35.070 回答