如何撤消animate()所做的更改?

时间:2015-11-29 19:40:12

标签: android animation

可以使用animate()撤消对View属性所做的更改吗?

特别是,如何撤消使用animate().yBy(x)进行的更改?

请注意,我尝试使用animate().yBy(-x)并且它在大多数情况下都有效,但有些时候由于某些原因animate().yBy(x)似乎无法正确完成(特别是当片段暂停然后恢复时)所以animate().yBy(-x)过度移动视图。

我正在寻找一种方法,让我们在使用animate()更改它们之前,将View的属性重置为它们的方式。

2 个答案:

答案 0 :(得分:3)

xBy()yBy()动画会影响translationXtranslationY属性。您可以通过getTranslationX()getTranslationY()获取这些属性的当前值。因此,要撤消之前的动画,请将当前属性值乘以-1并为其设置动画。或者,如果您正在寻找“粉碎”剪辑(无动画),只需致电setTranslationX(0)setTranslationY(0)

答案 1 :(得分:0)

通过使用插值器,我们可以反转动画:

public class InverAnim implements Interpolator {
    @Override
    public float getInterpolation(float paramFloat) {
        return Math.abs(paramFloat -1f);
    }
}

在动画上你可以设置新的插补器:

myAnimation.setInterpolator(new InverAnim());