Interpolator(介绍吗)
额,网上有那么多讲解,就不写介绍了吧。。。
就在今天写动画的时候,突然看到以前使用了插值器,想了一下貌似没有仔细学习过,于是就好好学了一下。这里做一个笔记~~~。
先看一下代码
public class MyInterpolator implements Interpolator {
@Override
public float getInterpolation(float input) {
return input;
}
}
这是自定义的一个插值器,效果和LinearInterpolator一样,实现动画匀速变化效果。这里input的变化范围是[0,1],返回值的要求是0对应0、1对应1,之间数随意。我一直觉得将其映射成一个y关于x的函数可能更好理解一点,那么这个函数的导数变化就是view动画的速率变化了。
栗子:
设计一个简单效果,view移动先变慢到停止然后变快。我们按照y关于x的函数来理解,是不是x匀速从0到1变换,y的值从变化快渐渐到不变,然后又开始一点点变化快。也就是说函数的导数从大到0然后又变大。
这个过程我们可以靠到一个函数上,那就是y=x^3;
然后,我们只需要将[0,1]这个区间的y值起点和终点靠到0和1上就好了。进行函数的简单变换
y=(x-0.5)^3*4+0.5
public class MyInterpolator implements Interpolator {
@Override
public float getInterpolation(float input) {
return (float) (Math.pow(input - 0.5, 3) * 4 + 0.5);
}
}
这样,一个先变慢到停然后变快的插值器就实现了哈~~~
网友评论