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
相关产品推荐
相关产品推荐

