可以使用animate()
撤消对View属性所做的更改吗?
特别是,如何撤消使用animate().yBy(x)
进行的更改?
请注意,我尝试使用animate().yBy(-x)
并且它在大多数情况下都有效,但有些时候由于某些原因animate().yBy(x)
似乎无法正确完成(特别是当片段暂停然后恢复时)所以animate().yBy(-x)
过度移动视图。
我正在寻找一种方法,让我们在使用animate()
更改它们之前,将View的属性重置为它们的方式。
答案 0 :(得分:3)
xBy()
和yBy()
动画会影响translationX
和translationY
属性。您可以通过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());