Java中的Android淡入淡出动画

170

我想要一个ImageView的2秒动画,其中包括1000毫秒的淡入和1000毫秒的淡出。

这是我在ImageView构造函数中的目前代码:

Animation fadeIn = new AlphaAnimation(0, 1);
fadeIn.setDuration(1000);

Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setStartOffset(1000);
fadeOut.setDuration(1000);

AnimationSet animation = new AnimationSet(true);
animation.addAnimation(fadeIn);
animation.addAnimation(fadeOut);
this.setAnimation(animation);

当我运行这个动画时,没有任何东西显示出来。但是,当我移除其中一个alpha动画时,行为表现如预期。

我已经尝试过的事情:

  • 使用每种可以想象的setFillBeforesetFillAftersetFillEnabled的组合。
  • AnimationSet添加LinearInterpolator

1
是的,您可以淡入淡出图像!这个教程应该能解决问题。http://sankarganesh-info-exchange.blogspot.com/2011/04/performing-animation-in-android.html - Adam Storm
该教程描述了使用XML的方法。你知道如何使用Java实现相同的事情吗? - plowman
好的,我现在不在我的编程电脑旁边,所以无法测试这段代码,但是你可以在Java中设置XML属性。这是原始代码:android:interpolator="@android:anim/accelerate_interpolator" android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" /> 因此,你可能可以使用MyTween.setDurationg(300) MyTween.fromAlpha(0.0) MyTween(1.0)。 - Adam Storm
13个回答

4

我非常喜欢维塔利·津琴科解决方案,因为它很简短。

下面是一个更简洁的Kotlin版本,用于简单淡出效果。

viewToAnimate?.alpha = 1f
viewToAnimate?.animate()
             ?.alpha(0f)
             ?.setDuration(1000)
             ?.setInterpolator(DecelerateInterpolator())
             ?.start()

0

这里是Kotlin中的另一种选择

使用ObjectAnimator编程完成

  • 仅使用一个动画

  • 不要搞乱动画监听器

    private fun getFadeAnimation(v: View?): ObjectAnimator 
      return ObjectAnimator.ofFloat(v, "alpha", .3f, 1f).apply {
          repeatCount = ObjectAnimator.INFINITE
          repeatMode = ObjectAnimator.REVERSE
          duration = 1000
      }
    }
    
在活动中只创建一个实例,然后使用:
val animator = getFadeAnimator(myView)
animator.start()
animator.end()

0
在其中创建一个名为"anim"的目录。
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="1000" >

在其中创建一个名为"anim"的目录。
val fadeIn = AnimationUtils.loadAnimation(this, R.anim.fade_in)
    imageView.startAnimation(fadeIn)

你的回答可以通过提供更多的支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便其他人可以确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接