【问题标题】:Android: Why do Object Animators retain the start value?Android:为什么 Object Animators 保留起始值?
【发布时间】:2013-11-20 18:10:58
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: android objectanimator


    【解决方案1】:

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

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

    因此,当您启动 fadeOut 时,它会从 X 动画到 0.0f

    解决方法是什么?

    对于fadeOut,使用two values imply a starting and ending values

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

    【讨论】:

    • 如何为位图制作动画?
    猜你喜欢
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 2021-12-28
    相关资源
    最近更新 更多