android - 淡入淡出 Java 中的 Android 动画

标签 android animation

我想要一个 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 的所有可能组合。
  • LinearInterpolator 添加到 AnimationSet

最佳答案

想出了我自己的问题。该解决方案最终基于插值器。

Animation fadeIn = new AlphaAnimation(0, 1);
fadeIn.setInterpolator(new DecelerateInterpolator()); //add this
fadeIn.setDuration(1000);

Animation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setInterpolator(new AccelerateInterpolator()); //and this
fadeOut.setStartOffset(1000);
fadeOut.setDuration(1000);

AnimationSet animation = new AnimationSet(false); //change to false
animation.addAnimation(fadeIn);
animation.addAnimation(fadeOut);
this.setAnimation(animation);


如果您使用的是 Kotlin

val fadeIn = AlphaAnimation(0f, 1f)
fadeIn.interpolator = DecelerateInterpolator() //add this
fadeIn.duration = 1000

val fadeOut = AlphaAnimation(1f, 0f)
fadeOut.interpolator = AccelerateInterpolator() //and this
fadeOut.startOffset = 1000
fadeOut.duration = 1000

val animation = AnimationSet(false) //change to false
animation.addAnimation(fadeIn)
animation.addAnimation(fadeOut)
this.setAnimation(animation)

关于android - 淡入淡出 Java 中的 Android 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6796139/

相关文章:

java - Android:如何计算几天前的日期?

iphone - 用于推送 UIViewController 的自定义动画

jQuery 事件没有持续触发

animation - 加载声音时,Cocos2d应用程序卡住

android - 在Android上处理音频文件

Android线性布局,如何匹配剩余的父级?

android - 警告 : Ignoring platform '.DS_Store' , 不是文件夹

android - 将应用程序转移到我在 Play 商店和 App Store 中的开发者帐户

javascript - 使用 JavaScript 缓动动画

iphone - iPad : Animate UILabels color changing