我几乎都在寻找问题所暗示的内容 - DecelerateAccelerateInterpolator
。我想要做的是让动画的前半部分减速,然后加速。 (我用它来模仿Bèzier曲线上的引力效应)。
编辑:
基本上,我正在寻找的是当物体沿着Bèzier曲线在屏幕上向上移动时,它会减速直到它到达顶部(此时它暂时停止,或者速度为0或者其他) ,然后它从另一边回来时开始加速。
答案 0 :(得分:4)
尝试使用我的自定义插值器。你很受欢迎:)。
mAnimation.setInterpolator(new Interpolator() {
@Override
public float getInterpolation(float pInput) {
System.out.println("input " + pInput);
// (1-(1-(x*2))^3)/2
return (float) (1 - Math.pow(1 - (2 * pInput), 3)) / 2;
}
});
答案 1 :(得分:2)
我认为你实际上可以链接两个插值器。第一个是从时间0到时间1的DecelerateInterpolator
,然后在时间1到时间2开始AccelerateInterpolator
。基本上将时间分成两半。
答案 2 :(得分:1)
如果您使用的是Android API 21或更高版本,则可以将PathInterpolator与三次贝塞尔曲线一起使用:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
TimeInterpolator lInter = new PathInterpolator(0.0f, 0.97f, 1.0f, 0.03f);
animation.setInterpolator(lInter);
}
这是一个不错的网站,可用来计算您想要的bezier curve values: