做了些动画,发现动画都有一个Interpolator的属性,它到底是个啥东西?
网上也有很多解释Interpolator的文章,基本上都是停留在直接翻译SDK的意思层面上。看了,也就明白一个大概。
Interpolator英文意思是: 篡改者; 分类机; 校对机
SDK对Interpolator的描述是:An interpolator defines the rate of change of an animation. This allows the basic animation effects (alpha, scale, translate, rotate) to be accelerated, decelerated, repeated, etc。简而言之Interpolator就是一个“变化率”,一个基本动画的“变化率”。
比如:从A到B的一个平移动画,移动,当然后速度的快慢,那么从A到B可以是匀速、匀加速、匀减速、变速完成这段距离。假设距离为S,时间为t,速度为v,都知道S=v*t。
这个Interpolator在这里就是一个速度控制器,控制速度变化。先给一个对Interpolator的大概理解,接下来站在程序员的角度来认识Interpolator。
Interpolator借口只有一个抽象方法getInterpolation(float input),由此SDK中扩展了另外几个常用Interpolator类,分别是:
——AccelerateInterpolator:动画从开始到结束,变化率是一个加速的过程。
——DecelerateInterpolator:动画从开始到结束,变化率是一个减速的过程。
——CycleInterpolator:动画从开始到结束,变化率是循环给定次数的正弦曲线。
——AccelerateDecelerateInterpolator:动画从开始到结束,变化率是先加速后减速的过程。
——LinearInterpolator:动画从开始到结束,变化率是线性变化。
..............
这里给一个简单的实现Interpolator接口的类:
import android.view.animation.Interpolator;
public class MyInterpolator implements Interpolator {
private float mFactor;
private int i;
public MyInterpolator(int i){
this.i = i;
}
@Override
public float getInterpolation(float input) {
switch(i){
case 1:mFactor = input;
break;
case 2:mFactor = input*input*input;
break;
}
return mFactor;
}
}
当初始变量为1的时候,mFactor = input,是一个线性函数,“变化率”是匀速的
当初始变量为2的时候,mFactor = input*input*input,是一个曲线函数,“变化率”呈三次方。
这里需要注意的是,input是一个0.0f~1.0f的浮点类型
从上面看来,自定义一个Interpolator就是用input根据所需构造一个函数出来
比如:这里把初始变量为2的时候,把函数改为:mFactor=3*input。这里给出一个测试出来的效果图
这两个图所做的动画都是往下移动100的距离,时间都为3000ms.并且同时做。那为什么绿色的花移动距离是紫色花移动距离的3倍呢?这里来分析一下。
都是以input为变量的一次线性函数,故两者都是匀速运动,此时后者的速度是前者的3倍,所以移动距离也应该是3被。回过头来看,在设置TranslateAniamtion的时候,明明是移动一样的距离啊!这里可以猜测这时设置的距离就不起效果了,也就是Interpolator改变了之前设置的距离。
现在基本上明白了Interpolator到底是做什么的了!
相关推荐
- **`interpolator`**:动画的插入器,用于控制动画的速度变化。 - **`fromXScale`/`toXScale`**:动画起始和结束时X轴的伸缩比例。 - **`fromYScale`/`toYScale`**:动画起始和结束时Y轴的伸缩比例。 - **`pivotX`/...
- 插入器控制动画的速度曲线,如`accelerate_decelerate_interpolator`(加速后减速),`accelerate_interpolator`(仅加速),和`decelerate_interpolator`(仅减速)。Android SDK还提供了其他预定义的插入器,...
-- 插入器 --> android:fromXScale="0.0" <!-- 动画开始时 X 轴缩放比例 --> android:toXScale="1.4" <!-- 动画结束时 X 轴缩放比例 --> android:fromYScale="0.0" <!-- 动画开始时 Y 轴缩放比例 --> android:...
interpolator指定动画插入器,常见的有加速减速插入器accelerate_decelerate_interpolator,加速插入器accelerate_interpolator,减速插入器decelerate_interpolator。 fromXScale,fromYScale,动画开始前X,Y的缩放...
interpolator:动画插入器(加速、减速插入器) repeatCount:动画重复的次数 repeatMode:顺序动画(restart)/倒序动画(reverse) startOffset:动画之间时间间隔 对于动画的创建一般有两种方式: 第一种是在...
interpolator指定动画插入器,常见的有加速减速插入器accelerate_decelerate_interpolator,加速插入器accelerate_interpolator,减速插入器decelerate_interpolator。 fromXScale,fromYScale,动画开始前X,Y的缩放...
综上所述,"Android 页面特效集合源码"不仅展示了Android动画系统的深度应用,还可能涵盖了自定义组件、布局设计、手势检测等多个方面,对于Android开发者来说是一份宝贵的参考资料。通过研究和学习这个源码,开发者...
在描述中提到的“实现了多个属性动画”,可能包括但不限于淡入淡出、移动、旋转、缩放等各种效果,这些可以通过自定义 interpolator(插值器)和Evaluator(估值器)来进一步定制动画的行为和视觉效果。同时,使用...
此外,考虑到性能优化,我们可能会使用差值器(Interpolator)来改变动画的速度曲线,比如AccelerateDecelerateInterpolator,使动画开始和结束时速度较慢,中间速度快,这样看起来更加自然。同时,为了避免不必要的...
4. `interpolator`: 定义动画的插入器,影响动画的速度曲线。例如,`accelerate_decelerate_interpolator`使得动画先加速后减速,`accelerate_interpolator`和`decelerate_interpolator`分别是单纯的加速和减速。 5....
查看apiDemos,找到View/Animation/shake找到对应的动画代码,直接拷贝过来 当导入一个项目的时候,报R文件不存在,很多情况是xml...interpolator是插入器,可以定义动画的速度等 调用Animation对象的setInterpolat
二、动画插入器(Interpolator)的使用: 1. `AccelerateInterpolator`:让动画在开始时慢速,然后逐渐加快速度。 2. `DecelerateInterpolator`:与之相反,让动画在开始时快速,然后逐渐减速。 3. `...
动画的时长和速度可以通过调整 interpolator 来控制,以达到最佳用户体验。 4. **处理滑动冲突** RecyclerView通常会与其父视图或其他视图有滑动冲突。为了解决这个问题,我们需要在RecyclerView的滑动事件中处理...