You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:淡入动画完成后视图消失的原因是什么?

Android淡入动画结束后元素消失的解决办法

你遇到的问题根源在于:你把已经加载好的淡入动画,又添加到了一个新创建的AnimationSet中,但这个新的AnimationSet没有设置fillAfter=true,导致原动画XML里的fillAfter属性被覆盖失效,动画结束后元素回到初始的透明状态。

下面是两种可行的修复方案:

方案一:直接使用加载的动画(无需额外AnimationSet)

既然你的动画XML已经配置好了所有参数,没必要再包装一层AnimationSet,直接启动动画即可:

Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.simple_fade_in);
v.startAnimation(fadeInAnimation);

方案二:给AnimationSet添加fillAfter属性

如果确实需要使用AnimationSet(比如要组合多个动画),必须给这个AnimationSet也设置fillAfter=true:

AnimationSet mAnimationSet = new AnimationSet(false);
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.simple_fade_in);
mAnimationSet.addAnimation(fadeInAnimation);
mAnimationSet.setFillAfter(true); // 关键:添加这一行
v.startAnimation(mAnimationSet);

补充说明:动画XML中的android:fillAfter="true"是作用在当前动画(或动画集合)上的,当你把单个动画加到新的AnimationSet时,新集合的属性优先级更高,所以必须确保集合也开启了fillAfter。

内容的提问来源于stack exchange,提问作者hina abbasi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:34:56