【Android】插值器——Interpolatort

Interpolatort通常在动画中使用,主要来改变动画变化率。常用的有下面几种Interpolator,下面图文解说下:

AccelerateDecelerateInterpolator开始与结束的地方速率改变比较慢,在中间的时候加速


AccelerateInterpolator开始的地方速率改变比较慢,然后开始加速


AnticipateInterpolator开始的时候向后然后向前甩

 

AnticipateOvershootInterpolator开始的时候向后然后向前甩一定值后返回最后的值


BounceInterpolator动画结束的时候弹起


CycleInterpolator循环播放特定的次数,速率改变沿着正弦曲线

  

DecelerateInterpolator在开始的地方快然后慢


创建的时候,可以传factor值,如DecelerateInterpolator(2f):


 LinearInterpolator以常量速率改变

 

OvershootInterpolator向前甩一定值后再回到原来位置


创建的时候,可以传tension值,OvershootInterpolator(0.8f):




以下是动画插值器demo效果:

花了点时间,把所有动画的插值器都用了一遍,写了个Demo分享下,看效果之前先看下Android动画中插值器的类型:

<code class="hljs ruby has-numbering"><span class="hljs-constant">AccelerateDecelerateInterpolator</span>   
<span class="hljs-variable">@android</span><span class="hljs-symbol">:anim/accelerate_decelerate_interpolator</span>
在动画开始与介绍的地方速率改变比较慢,在中间的时候加速

<span class="hljs-constant">AccelerateInterpolator</span>    
<span class="hljs-variable">@android</span><span class="hljs-symbol">:anim/accelerate_interpolator</span>                 
在动画开始的地方速率改变比较慢,然后开始加速

<span class="hljs-constant">AnticipateInterpolator</span>  
<span class="hljs-variable">@android</span><span class="hljs-symbol">:anim/anticipate_interpolator</span>                    
开始的时候向后然后向前甩

<span class="hljs-constant">AnticipateOvershootInterpolator</span>    
<span class="hljs-variable">@android</span><span class="hljs-symbol">:anim/anticipate_overshoot_interpolator</span> 
开始的时候向后然后向前甩一定值后返回最后的值

<span class="hljs-constant">BounceInterpolator</span>      
<span class="hljs-variable">@android</span><span class="hljs-symbol">:anim/bounce_interpolator</span>                    
动画结束的时候弹起

<span class="hljs-constant">CycleInterpolator</span>  
<span class="hljs-variable">@android</span><span class="hljs-symbol">:anim/cycle_interpolator</span>                           
动画循环播放特定的次数,速率改变沿着正弦曲线

<span class="hljs-constant">DecelerateInterpolator</span> 
<span class="hljs-variable">@android</span><span class="hljs-symbol">:anim/decelerate_interpolator</span>                   
在动画开始的地方快然后慢

<span class="hljs-constant">LinearInterpolator</span>
<span class="hljs-variable">@android</span><span class="hljs-symbol">:anim/linear_interpolator</span>                            
以常量速率改变

<span class="hljs-constant">OvershootInterpolator</span>   
<span class="hljs-variable">@android</span><span class="hljs-symbol">:anim/overshoot_interpolator</span>                   
向前甩一定值后再回到原来位置</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li></ul><div style="display: none;" class="save_code tracking-ad" data-mod="popu_249"><a target=_blank href="javascript:;"><img src="http://static.blog.csdn.net/images/save_snippets.png" /></a></div><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li></ul>

设置插值器的代码很简单 alphaAnimation.setInterpolator(baseInterpolator);
XML中的用法
android:interpolator="@android:anim/accelerate_decelerate_interpolator"

接下来就仔细的看看效果吧:

AccelerateDecelerateInterpolator

在动画开始与介绍的地方速率改变比较慢,在中间的时候加速

这里写图片描述

AccelerateInterpolator

在动画开始的地方速率改变比较慢,然后开始加速

这里写图片描述

AnticipateInterpolator

开始的时候向后然后向前甩

这里写图片描述

AnticipateOvershootInterpolator

开始的时候向后然后向前甩一定值后返回最后的值

这里写图片描述

BounceInterpolator

动画结束的时候弹起

这里写图片描述


CycleInterpolator

动画循环播放特定的次数,速率改变沿着正弦曲线

这里写图片描述

DecelerateInterpolator

在动画开始的地方快然后慢

这里写图片描述

LinearInterpolator

以常量速率改变

这里写图片描述


OvershootInterpolator

向前甩一定值后再回到原来位置

这里写图片描述

最后 CycleInterpolator 这个插值器需要注意下,它的构造函数需要传入一个float值,这个值就是动画重复的次数,并且如过对这个差值器 设置 android:fillAfter=”true” 那么动画结束后,你看到的回事动画开始的第一幕(第一帧),如果不设置或者设置成 android:fillBefore=”true”,那么看到的回事控件本身的XML的状态


就这些了,源码下载:
http://download.csdn.net/detail/cjh_android/9532238

转载自:http://blog.csdn.net/lgaojiantong/article/details/39451243?locationNum=2   


http://blog.csdn.net/cjh_android/article/details/51508634?locationNum=8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值