我要做的是在一个带有线性插值器的视图上加载一个动画。然后,当我的应用程序中发生某个事件时,将插补器更改为减速插补器。因此效果将是一个持续的动画,直到事件发生,然后动画将减速停止。这有可能实现吗?我想知道我将如何实现这一点,并希望有一些方向。 谢谢!
答案 0 :(得分:2)
是。您将为动画创建自定义插值器。它包含您想要的其他插补器。当事件发生时,只需在插补器中触发它,让插补器为另一个插入器插入一个插补器。
public class CompositeInterpolator implements TimeInterpolator {
LinearInterpolator mLinear;
DecelerateInterpolator mDecelerate;
boolean mUseLinear = false;
public CompositeInterpolator() {
mLinear = new LinearInterpolator();
mDecelerate = new DecelerateInterpolator();
}
public void useLinear(boolean use) {
mUseLinear = use;
}
@Override
public float getInterpolation(float input) {
if (mUseLinear) {
return mLinear.getInterpolation(input);
} else {
return mDecelerate.getInterpolation(input);
}
}
}
然后在您想要交换时调用useLinear(false)
。