动画淡入淡出

使用这个代码,我只是淡入淡出,我寻找关于添加淡出。 我添加另一个名为“淡出”的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); 

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> 

这是我的解决方案。 它使用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(); } 

这是Fade In and Fade Out Animation with Alpha Effect好例子

在淡出中动画淡化

更新 :

检查这个答案可能会帮助你

根据文档AnimationSet

代表应该一起播放的一组动画。 每个单独的动画的转换组成一个单一的转换。 如果AnimationSet设置其子项也设置的任何属性(例如duration或fillBefore),则AnimationSet的值会覆盖子值

 AnimationSet mAnimationSet = new AnimationSet(false); //false means don't share interpolators 

如果此组中的所有动画都使用与此AnimationSet关联的插补器,则传递true。 如果每个动画应使用自己的插补器,则传递false。

 ImageView imageView= (ImageView)findViewById(R.id.imageView); Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_in); Animation fadeOutAnimation = AnimationUtils.loadAnimation(this, R.anim.fade_out); mAnimationSet.addAnimation(fadeInAnimation); mAnimationSet.addAnimation(fadeOutAnimation); imageView.startAnimation(mAnimationSet); 

我希望这会帮助你。

我一直在Kotlin工作(推荐给大家),所以语法可能有点偏差。 我所做的只是打电话给:

  • v.animate()。alpha(0f).duration = 200

我认为,在Java中,这将是以下几点:

  • v.animate()。α(0F).setDuration(200)

尝试:

  • 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)}