Java 如何创建自定义插值器以在android中应用平移动画
我想创建一个自定义插值以应用平移动画,其中动画应通过以下功能:Java 如何创建自定义插值器以在android中应用平移动画,java,android,animation,translate-animation,interpolation,Java,Android,Animation,Translate Animation,Interpolation,我想创建一个自定义插值以应用平移动画,其中动画应通过以下功能: public static float easeIn(float t,float b , float c, float d) { return c*(t/=d)*t + b; } 其中: t: current time b: start value c: change in value d: duration 我找到了一个可以实现缩放动画的方法,其中如果只取一个参数: imp
public static float easeIn(float t,float b , float c, float d) {
return c*(t/=d)*t + b;
}
其中:
t: current time
b: start value
c: change in value
d: duration
我找到了一个可以实现缩放动画的方法,其中如果只取一个参数:
import android.view.animation.Interpolator;
public class MyInterpolator implements Interpolator {
public MyInterpolator() {
}
public float getInterpolation(float t) {
float x = 2.0f * t - 1.0f;
return 0.5f * (x * x * x + 1.0f);
}
}
如何使用上述函数创建插值以进行翻译。简短回答:从名称来看,我想你的easyIn应该是一个加速器插值器 你写的函数不是插值器能做的。插值器不关心它是缩放、Alpha还是平移图像。
文档对插值器getInterpolation的解释如下: 介于0和1.0之间的值,表示动画中的当前点,其中0表示开始,1.0表示结束 插值器提供了一个从经过的时间(相对)映射到动画进度的函数。你可以用%来想象,getInterpolation(xy)会告诉你
“如果传递了总持续时间的xy%,则应传递总动画的百分比是多少?” 以LinearInterpolator为例。实现如下所示:
public float getInterpolation(float t) {
return t
}
示例:使用LinearInterpolator:在45%(0.45)的时间之后,应通过45%(返回0.45)的动画,即90px(200px*0.45) 有关详细信息,请阅读以下内容: 访问 通过操纵图表而不是复制线下的值来创建自定义插值器 短长代码片段: 比使用
Interpolator mInterpolator = PathInterpolatorCompat.create(1.000f, 0.000f, 1.000f, 1.030f)
使用复制的值创建自定义插值器可以使用路径插值器Compat类 这使用三次贝塞尔方法,需要4个参数 您可以获取所需的参数或
非常有用的网站!谢谢分享
val interpolatorCompat = PathInterpolatorCompat.create(0.12,1.05f,.98f,-0.82f)
anim.setInterpolator(interpolatorCompat);