Android 动画插值器在动画期间发生变化

Android Animation Interpolator Change During Animation

我想做的是在视图上加载一个动画,例如使用线性插值器。然后,当我的应用程序中发生某个事件时,将插值器更改为减速插值器之类的东西。所以效果将是一个持续的动画,直到事件发生,然后动画会减慢到停止。这有可能实现吗?我想知道我将如何实现这一目标并且会喜欢一些方向。 谢谢!

是的。您将为动画创建自定义插值器。它包含您想要的其他插值器。当事件发生时,只需在插值器中触发它,然后让插值器将一个插值器换成另一个。

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)