Android提供以下动画插值器:AccelerateInterpolator,DecelerateInterpolator,AccelerateDecelerateInterpolator。
如何实现DecelerateAccelerateInterpolator?
答案 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));
}
}
}