我想创建一个自定义插值来应用平移动画,其中动画应该通过以下函数:
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应该是AccelerateInterpolator
您编写的函数不是插补器可以执行的操作.插值器不关心它是Scale-,Alpha-还是TranslateAnimation.
文档解释了Interpolator getInterpolation如下:
介于0和1.0之间的值表示动画中的当前点,其中0表示开始,1.0表示结束
内插器提供从经过的时间(相对)映射到动画进度的功能.您可以想象它以%为单位,getInterpolation(xy)会告诉您
“如果通过总持续时间的xy%,应该传递多少%的动画?”
以LinearInterpolator为例.实现将如下所示:
public float getInterpolation(float t) {
return t
}
示例:使用LinearInterpolator从0px动画到200px:
45%(0.45)的时间后,45%(返回0.45)的动画应该通过,即90px(200px * 0.45)
Android Animations Tutorial 5: More on Interpolators
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。