我试图执行淡出,然后在动画中面对,但视图在动画持续时间内变得不可见,然后重新出现。
fade_out_in.xml
:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillEnabled="true"
>
<alpha
android:interpolator="@android:interpolator/linear"
android:fromAlpha="1"
android:toAlpha="0"
android:duration="200" />
<alpha
android:interpolator="@android:interpolator/linear"
android:fillAfter="true"
android:fromAlpha="0"
android:toAlpha="1"
android:duration="200"
android:startOffset="200" />
</set>
代码:
Animation animation = AnimationUtils.loadAnimation(this, R.anim.fade_out_in);
mImageView.startAnimation(animation);
答案 0 :(得分:2)
我无法准确地告诉你为什么这不起作用,但似乎多个alpha动画不适用于XML&lt;设置&gt; 。你可以将它们组合成一个像这样的alpha:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:duration="200"
android:fromAlpha="1"
android:toAlpha="0"
android:startOffset="500"
android:interpolator="@android:interpolator/linear"
android:repeatCount="1"
android:repeatMode="reverse" />
</set>
或剪切xml并使用像Rubin的答案中的AnimationSet一样。 另一种可能性是使用ViewPropertyAnimator:
final LinearInterpolator interpolator = new LinearInterpolator();
mImageView.animate()
.alpha(0)
.setDuration(200)
.setStartDelay(500)
.setInterpolator(interpolator)
.withEndAction(new Runnable() {
@Override
public void run() {
mImageView.animate()
.alpha(1)
.setDuration(200)
.setInterpolator(interpolator);
}
});
请注意.withEndAction()调用需要MIN API 16。
答案 1 :(得分:1)
请尝试该代码
Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setInterpolator(new AccelerateInterpolator());
fadeOut.setStartOffset(1000);
fadeOut.setDuration(1000);
Animation fadeIn = new AlphaAnimation(0, 1);
fadeIn.setInterpolator(new DecelerateInterpolator());
fadeIn.setDuration(1000);
AnimationSet animation = new AnimationSet(false);
animation.addAnimation(fadeIn);
animation.addAnimation(fadeOut);
this.setAnimation(animation);