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