Android alpha动画:在动画完成时保持上一帧动画的状态

5

我正在使用alpha动画淡化一个imageView。我希望在动画结束后,图片可以保持透明度不变。尝试使用fillAfter和fillEnabled的不同组合,但没有成功。有什么方法可以实现这个效果?

pom

2个回答

16

将fillEnabled和fillAfter设置为true总是对我有效。

anim = new AlphaAnimation(0.3f, 1.0f);
anim.setDuration(500);
anim.setFillEnabled(true);
anim.setFillAfter(true);
<view>.startAnimation(anim);

我赞同。这也可以仅通过XML实现。 - class stacker
不错!谢谢,兄弟。 :) - Martin Pfeffer

8
通过setAnimationListener()Animation.AnimationListener添加到Animation中。在监听器的onAnimationEnd()方法中,对ImageView调用setVisibility(View.INVISIBLE)

不是最佳解决方案。请查看chris的答案。 - class stacker
1
@ClassStacker: 您的想法是受欢迎的。setFillAfter() 很少是正确的答案,因为它并不能按照人们期望的方式工作(例如,在 TranslateAnimation 上使用 setFillAfter() 会导致触摸事件仅在位置起作用)。对于完全静态的 UI 上的 alpha 动画,它可能是可行的,但如果 UI 中有任何重大变化,我不会感到丝毫惊讶,看到 alpha 返回其原始值。当然,在 Android 3.0+ 上,您可以直接设置小部件的 alpha 属性。 - CommonsWare
我明白了,我不知道TranslateAnimation的问题。好的,很高兴知道!你提供了这个解决方案的动机,非常棒。 - class stacker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接