4

我混合了在各种场景中运行的动画。举个例子;

我在一个小圆圈位图上有一个淡入淡出动画师。在应该开始和上ACTION_DOWN,当淡入结束时,淡出应该运行。但是,如果用户在淡入结束之前拿起手指,它应该停在那里(),淡出应该从那个 alpha 值开始。我不想要一个新的对象动画师,我在构造函数中定义了一个这样的动画师fade-inACTION_UPfadein.cancel()

    fadein = Objectanimator.ofFloat(bitmap, "alpha", 1.0f);
    fadeOut = Objectanimator.ofFloat(bitmap, "alpha", 0.0f);

发生的情况是,如果我产生上述问题(快速拿起手指),淡出动画师将拾取淡入停止的 alpha 值,并保留该值。也就是说,从第二次开始,它就不会获得新的 alpha!这是为什么?解决方法是什么?每次都创建新对象?

4

1 回答 1

3

ObjectAnimator类修改视图的属性,因此它使用 Object 属性的 setter 方法更新视图的属性(根据Android 官方指南)。

所以,fadein动画运行的时候,alpha值会不断的修改,fadein.cancel()执行的时候,View的alpha值就停止更新了。假设这个值为X

所以,当你开始时,它会从到fadeOut动画。X0.0f

解决方法是什么?

对于fadeOut,使用两个值意味着一个起始值和一个结束值

fadeOut = Objectanimator.ofFloat(bitmap, "alpha", 1.0f, 0.0f);
于 2013-11-20T10:10:58.410 回答