创建一个Decelerate AccelerateInterpolator

时间:2014-12-03 10:54:11

标签: android android-animation

Android提供以下动画插值器:AccelerateInterpolator,DecelerateInterpolator,AccelerateDecelerateInterpolator。

如何实现DecelerateAccelerateInterpolator?

1 个答案:

答案 0 :(得分:4)

你想要一个插入器在开始和结束时快速但在中间慢吗?

找到代表插补器的正确数学函数,并使用数学函数实现Interpolator接口。

来自http://cogitolearning.co.uk/?p=1078

的示例
public class DecelerateAccelerateInterpolator implements Interpolator {
  public DecelerateAccelerateInterpolator() {}
  public float getInterpolation(float t) {
    float x=2.0f*t-1.0f;
    return 0.5f*(x*x*x + 1.0f);
  }
}

或者将DecelerateInterpolator与AccelerateInterpolator结合使用。

public class DecelerateAccelerateInterpolator implements Interpolator {
  final float factor;
  public DecelerateAccelerateInterpolator() {
    this(1);
  }

  public DecelerateAccelerateInterpolator(float factor) {
    this.factor = factor;
  }

  public float getInterpolation(float t) {
    if (t < 0.5f) {
      return new DecelerateInterpolator(factor).getInterpolation(2 * t);
    } else {
      return new AccelerateInterpolator(factor).getInterpolation(2 * (t - 0.5f));
    }
  }
}