动画淡入淡出

Pol*_*len 26 android android-animation

使用此代码我只有淡入淡出,我正在寻找如何添加淡出.我添加了另一个名为"fadeout"的xml,但我无法将其集成到我的代码中.

ImageView imageView = (ImageView)findViewById(R.id.imageView);
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fadein);
imageView.startAnimation(fadeInAnimation);

button1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        imageView.startAnimation(fadeInAnimation);
    }
}
Run Code Online (Sandbox Code Playgroud)

fadein.xml

<?xml version="1.0" encoding="UTF-8"?>
  <set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" 
     android:interpolator="@android:anim/accelerate_interpolator" 
   android:duration="Your Duration(in milisecond)"
    android:repeatCount="infinite"/>
 </set>
Run Code Online (Sandbox Code Playgroud)

TWi*_*lly 39

这是我的解决方案.它使用AnimatorSet.AnimationSet库太麻烦了,无法工作.这提供了淡入和淡出之间的无缝和无限过渡.

public static void setAlphaAnimation(View v) {
    ObjectAnimator fadeOut = ObjectAnimator.ofFloat(v, "alpha",  1f, .3f);
    fadeOut.setDuration(2000);
    ObjectAnimator fadeIn = ObjectAnimator.ofFloat(v, "alpha", .3f, 1f);
    fadeIn.setDuration(2000);

    final AnimatorSet mAnimationSet = new AnimatorSet();

    mAnimationSet.play(fadeIn).after(fadeOut);

    mAnimationSet.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
            mAnimationSet.start();
        }
    });
    mAnimationSet.start();
}
Run Code Online (Sandbox Code Playgroud)


Sil*_*ler 20

这是一个很好的例子 Fade In and Fade Out Animation with Alpha Effect

动画淡出淡出

更新 :

检查这个答案可能对你有帮助


Íca*_*ota 6

我一直在Kotlin工作(推荐给所有人),因此语法可能有点过时。我要做的只是简单地打电话给:

v.animate().alpha(0f).duration = 200
Run Code Online (Sandbox Code Playgroud)

我认为,在Java中,它将是以下内容:

v.animate().alpha(0f).setDuration(200)
Run Code Online (Sandbox Code Playgroud)

尝试:

private void hide(View v, int duration) {
    v.animate().alpha(0f).setDuration(duration)
}

private void show(View v, int duration) {
    v.animate().alpha(1f).setDuration(duration)
}
Run Code Online (Sandbox Code Playgroud)