自定义控件三部曲之动画篇(二)——Interpolator插值器

自定义控件三部曲之动画篇(二)——Interpolator插值器,第1张

概述一、概述Interpolator属性是Animation类的一个XML属性,所以alpha、scale、rotate、translate、set都会继承得到这个属性。Interpolator被译为插值器,其实我不大能从字面上理解为什么会这样译,其实他是一个指定动画如何变化的东东,跟PS里的动作有点类似:随便拿来一张图片,应用一个动作,图片就会指定变化。Interpolator的系统值有下面几...

一、概述
Interpolator属性是Animation类的一个XML属性,所以Alpha、scale、rotate、translate、set都会继承得到这个属性。Interpolator被译为插值器,其实我不大能从字面上理解为什么会这样译,其实他是一个指定动画如何变化的东东,跟PS里的动作有点类似:随便拿来一张图片,应用一个动作,图片就会指定变化。

Interpolator的系统值有下面几个:

意义如下:

AccelerateDecelerateInterpolator   在动画开始与介绍的地方速率改变比较慢,在中间的时候加速AccelerateInterpolator                     在动画开始的地方速率改变比较慢,然后开始加速AnticipateInterpolator                      开始的时候向后然后向前甩AnticipateOvershootInterpolator     开始的时候向后然后向前甩一定值后返回最后的值BounceInterpolator                          动画结束的时候d起CycleInterpolator                             动画循环播放特定的次数,速率改变沿着正弦曲线DecelerateInterpolator                    在动画开始的地方快然后慢linearInterpolator                            以常量速率改变OvershootInterpolator                      向前甩一定值后再回到原来位置

下面看看各个标签在应用上面的每个插值器后会运动轨迹会怎样。

 

二、scale标签
下面先看看Scale标签应用插值器后,都会变成什么样。

先看下XML代码:(从控件中心点,从0放大到1.4倍,保持结束时的状态)

<?xml version="1.0" enCoding="utf-8"?><scale xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:interpolator="@androID:anim/accelerate_decelerate_interpolator"    androID:fromXScale="0.0"    androID:toXScale="1.4"    androID:fromYScale="0.0"    androID:toYScale="1.4"    androID:pivotX="50%"    androID:pivotY="50%"    androID:duration="700"     androID:fillAfter="true"/>

下面一个个看看,每个xml值对应的scale动画是怎样的。

  AccelerateInterpolator                                                 DecelerateInterpolator                    

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

     AnticipateInterpolator                                            AnticipateOvershootInterpolator 

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

      BounceInterpolator                                                      CycleInterpolator       

            动画结束的时候d起                             动画循环播放特定的次数,速率改变沿着正弦曲线
   

    linearInterpolator                                  OvershootInterpolator  

       以常量速率改变                                向前甩一定值后再回到原来位置
   

三、rotate标签

下面先看看rotate标签应用插值器后,都会变成什么样。

先看下XML代码:(从控件中心点,从0放大到1.4倍,保持结束时的状态)

<?xml version="1.0" enCoding="utf-8"?><rotate xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:interpolator="@androID:anim/accelerate_decelerate_interpolator"    androID:fromdegrees="0"    androID:todegrees="360"    androID:pivotX="50%"    androID:pivotY="50%"    androID:duration="700"     androID:fillAfter="true"/>

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

  AccelerateInterpolator                                                 DecelerateInterpolator                    

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

            

   AnticipateInterpolator                                            AnticipateOvershootInterpolator 

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

  BounceInterpolator                                                      CycleInterpolator       

            动画结束的时候d起                             动画循环播放特定的次数,速率改变沿着正弦曲线
   

  linearInterpolator                                  OvershootInterpolator  

以常量速率改变                                向前甩一定值后再回到原来位置
   

四、Alpha标签

下面先看看Alpha标签应用插值器后,都会变成什么样。

将透明度从0变成1.0,使用不同的插值器看看有什么不同(因为只是透明度的变化,所以基本看不出来有什么不同)

<?xml version="1.0" enCoding="utf-8"?><Alpha xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:interpolator="@androID:anim/accelerate_decelerate_interpolator"    androID:fromAlpha="0.0"    androID:toAlpha="1.0"    androID:duration="3000"     androID:fillAfter="true"/>

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

 AccelerateInterpolator                                                 DecelerateInterpolator                    

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

AnticipateInterpolator                                            AnticipateOvershootInterpolator 

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

             BounceInterpolator                                                      CycleInterpolator       

            动画结束的时候d起                             动画循环播放特定的次数,速率改变沿着正弦曲线
   

        linearInterpolator                                   OvershootInterpolator  

                      以常量速率改变                                 向前甩一定值后再回到原来位置
   

五、translate标签

下面先看看translate标签应用插值器后,都会变成什么样。

把控件从(0,0)平移到(-200,-200)的位置,保持结束时状态不变,使用不同插值器。

<?xml version="1.0" enCoding="utf-8"?><translate xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:interpolator="@androID:anim/accelerate_decelerate_interpolator"    androID:fromXDelta="0"       androID:toXDelta="-200"      androID:fromYDelta="0"      androID:toYDelta="-200"      androID:duration="2000"      androID:fillAfter="true"/>

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

    AccelerateInterpolator                                                 DecelerateInterpolator                    

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

   

    AnticipateInterpolator                                            AnticipateOvershootInterpolator 

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

         BounceInterpolator                                                      CycleInterpolator       

            动画结束的时候d起                             动画循环播放特定的次数,速率改变沿着正弦曲线
   

    linearInterpolator                                  OvershootInterpolator  

 

以常量速率改变                                向前甩一定值后再回到原来位置
   

这篇文章到这就结束了,因为动画比较多,可能看的会有点晕。

总结

以上是内存溢出为你收集整理的自定义控件三部曲之动画篇(二)——Interpolator插值器全部内容,希望文章能够帮你解决自定义控件三部曲之动画篇(二)——Interpolator插值器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1089533.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存