猿问

用Java淡入淡出Android动画

我希望有一个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。


肥皂起泡泡
浏览 480回答 3
3回答

哈士奇WWW

弄清楚我自己的问题。该解决方案最终基于插值器。Animation fadeIn = new AlphaAnimation(0, 1);fadeIn.setInterpolator(new DecelerateInterpolator()); //add thisfadeIn.setDuration(1000);Animation fadeOut = new AlphaAnimation(1, 0);fadeOut.setInterpolator(new AccelerateInterpolator()); //and thisfadeOut.setStartOffset(1000);fadeOut.setDuration(1000);AnimationSet animation = new AnimationSet(false); //change to falseanimation.addAnimation(fadeIn);animation.addAnimation(fadeOut);this.setAnimation(animation);如果您使用的是Kotlinval fadeIn = AlphaAnimation(0f, 1f)fadeIn.interpolator = DecelerateInterpolator() //add thisfadeIn.duration = 1000val fadeOut = AlphaAnimation(1f, 0f)fadeOut.interpolator = AccelerateInterpolator() //and thisfadeOut.startOffset = 1000fadeOut.duration = 1000val animation = AnimationSet(false) //change to falseanimation.addAnimation(fadeIn)animation.addAnimation(fadeOut)this.setAnimation(animation)
随时随地看视频慕课网APP

相关分类

Android
我要回答