为了账号安全,请及时绑定邮箱和手机立即绑定

用Java淡入淡出Android动画

用Java淡入淡出Android动画

肥皂起泡泡 2019-12-09 14:28:28
我希望有一个2秒的ImageView动画,该动画花1000ms淡入,然后1000ms淡出。到目前为止,这是我的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动画时,该行为将按预期方式工作。我已经尝试过的事情:的所有可能的组合setFillBefore,setFillAfter和setFillEnabled。添加LinearInterpolator到AnimationSet。
查看完整描述

3 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

弄清楚我自己的问题。该解决方案最终基于插值器。


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)


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 485 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信