我正在对按钮执行淡入淡出效果。
AnimationSet set = new AnimationSet(true);
Animation animation2 = new AlphaAnimation((float) 0, 1);
animation2.setDuration(1500);
animation2.setRepeatMode(0);
set.addAnimation(animation2);
set.setFillAfter(true); // leaves the animation in its final status
btn.startAnimation(set);
我正在使用setFillAfter(true)
选项让按钮可见。这很好。现在我想再次执行动画,但不能再设置我的按钮在屏幕上不可见,除非我重新启动应用程序。 (alos尝试使用invalidate()但没有成功......)
任何想法都会“如此”受欢迎。
提前致谢! 保罗
答案 0 :(得分:4)
谢谢你的帮助。实际上我在开发人员doc上找到了答案。 “观看动画”(我试图做)和“属性动画”之间有很大的不同。基本上,视图动画会重绘您正在处理的视图的图像,但不会影响原始视图。因此,如果您从示例转换视图,则会在屏幕上移动视图,但是以编程方式保持视图处于初始状态并将捕获事件的原始位置。
以下是解释:
属性动画与视图动画的不同之处视图动画 系统提供仅动画View对象的功能,所以如果你 想要为非View对象制作动画,你必须实现自己的 这样做的代码。视图动画系统也受到约束 事实上它只暴露View对象的几个方面来制作动画, 例如视图的缩放和旋转而不是背景 例如,颜色。
视图动画系统的另一个缺点是它只是 修改了绘制视图的位置,而不是实际的视图本身。对于 例如,如果你动画一个按钮在屏幕上移动,那么 按钮绘制正确,但您可以单击的实际位置 按钮不会改变,所以你必须实现自己的逻辑 处理这个。
使用属性动画系统,这些约束是完全的 删除,你可以动画任何对象的任何属性(视图和 非视图)实际上修改了对象本身。该物业 动画系统的执行方式也更加强大 动画。在较高级别,您可以为属性分配动画师 您想要制作动画,例如颜色,位置或大小等 定义动画的各个方面,例如插值和 同步多个动画师。
但是,视图动画系统的设置时间较短 需要更少的代码来编写。如果视图动画完成了一切 您需要做的,或者您现有的代码是否已经正常运行 你想要的,没有必要使用属性动画系统。它 将两种动画系统用于不同的方式也是有意义的 如果用例出现的情况。
http://developer.android.com/guide/topics/graphics/prop-animation.html
对于我的情况,我使用了属性动画,它符合我所有的动画需求。感谢您的支持! :)
保
答案 1 :(得分:0)
取出set.setFillAfter(true);
并使用animationListener将Button设置为动画完成后可见,它将为用户提供相同的效果,并且您将能够使{{1}再次使其无形}}
View.setVisibility(View.INVISIBLE);