在android中重置动画效果

时间:2012-08-07 23:32:21

标签: android animation

我正在对按钮执行淡入淡出效果。

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()但没有成功......)

任何想法都会“如此”受欢迎。

提前致谢! 保罗

2 个答案:

答案 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);