Animation基础

来源:互联网 发布:手机淘宝网2016 编辑:程序博客网 时间:2024/05/22 04:28

1.Animation的四种类型

 TranslateAnimation 位移动画

 RotateAnimation 旋转动画

 AlphaAnimation 透明度渐变动画

 ScaleAnimation 缩放动画


2.构造方法

 四种类型的动画均可以通过 Animaion(Context context,int resId) 来加载res下定义的.anim文件

 

在搞清楚其构造方法前,要弄清楚Animation.RELATIVE_TO_SELF、Animation.RELATIVE_TO_PARENT和Animation.ABSOLUTE;

 Animation.RELATIVE_TO_SELF是以执行动画的View作为参考,

 Animation.RELATIVE_TO_PARENT是以执行动画的View所在的父控件作为参考;

 Animation.ABSOLUTE是以坐标轴的绝对值作为参考

 这种“参考”是不同类型的动画中是以不同的形式进行诠释的;

 

TranslateAnimation(fromXType, fromXValue, toXType, toXValue, fromYType, fromYValue, toYType, toYValue)

 位移动画是从一个坐标点移动到另一个坐标点,每个坐标点包含X轴和Y轴两个参量,所以一共是四个参数,

 即从(fromXValue,fromYValue)移动到(toXValue,toYValue);

 

而构造方法中的多个Type即为上述三种参考;

 “RELATIVE”是相对的, 即(fromXValue,fromYValue)和(toXValue,toYValue)的具体偏移量是由type相对性来确定的;比如

 type = Animation.RELATIVE_TO_SELF时,fromXValue= 0,fromYValue = 0,toXValue = 1,toYValue =1

 意味着动画将从当前位置向X轴正向移动(向右)自身长度,向Y轴正向(向下)移动自身高度;

 type = Animation.RELATIVE_TO_PARENT时,fromXValue= 0,fromYValue = 0,toXValue = 1,toYValue =1

 意味着动画将从当前位置向X轴正向移动(向右)父控件的长度,向Y轴正向(向下)移动父控件高度


值得注意的是 type = Animation.RELATIVE_TO_PARENTfromXValue= 0,fromYValue = 0,toXValue = 1,toYValue =1时,

动画的起始位移并不是从父控件的左上角开始,而是从控件的当前位置开始;

type =Animation.RELATIVE_TO_PARENTfromXValue= 1,fromYValue = 0,toXValue = 1,toYValue =1时,

动画在开始前,控件将有一个X轴负向(向左)父控件长度的偏移,再执行动画;


综上可知,type为“RELATIVE”时,初始位置的相对性是以空间的原始位置和fromXVAlue、fromYVAlue决定的,不管相对的是自身还是父控件,都是一样的;而动画的偏移量则是由type和value共同决定的;


另一种“参考”为ABSOLUTE,大多数情况下一般不要用,因为算位置真的很麻烦。


另外三种类型的构造方法与TranslateAnimation差不多

RotateAnimation(fromDegrees, toDegrees, pivotXType, pivotXValue, pivotYType, pivotYValue)

fromDegrees表示起始角度,toDegrees表示最终角度,

toDegrees>fromDegrees 顺时针旋转

toDegrees<fromDegrees 逆时针旋转

后面的四个参数,两个type两个value,作用是确定旋转的圆心


ScaleAnimation(fromX, toX, fromY, toY, pivotXType, pivotXValue, pivotYType, pivotYValue)

fromX, toX, fromY, toY四个参数

=1.0时 表示控件的原始大小,

<1.0时 表示控件被缩小

>1.0时 表示控件被放大

后面四个参数,也是两个type两个value,作用是确定缩放的中心点


AlphaAnimation(fromAlpha, toAlpha)

fromAlpha, toAlpha两个参数

=1.0时表示完全不透明

=0时表示完全透明


3.参数设置

setFillAfter 设置为true时, 动画结束时画面停留在最后一帧,默认为false

setFillBefore 设置为true时, 动画结束时画面停留在第一帧,默认为true

setFillEnable 设置为true时,将执行setFillBefore和setFillAfter方法,默认为true


setRepeatCount 设置重复次数,是重复次数,而不是动画执行的次数,比如设置重复1次,则动画将执行2次

setRepeatMode RESTART 重新从头执行 REVERSE 反方向执行,设置为REVERSE,重复1次 将回到初始状态


值得注意的是,这个REVERSE是将原动画沿着时间轴的反方向重新复述出来,而不是朝着反方向按照原动画的逻辑执行一编,将Interpolator设置为bounce自明


setStartOffset 在动画开始前设置一个延时效果


setStartTime 设置为START_ON_FIRST_FRAME, 动画将在getTransformation(long, Transformation)方法被调用时立即启动.


setZAdjustment 设置播放的Z轴(层次),如果有多个动画,可以设定哪个动画显示在上层


setAnimationListener() 设置动画执行过程的监听


4.Interpolator

系统自带的:通过setInterpolator(context, android.R.interpolator.xxx)设置

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

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

AnticipateInterpolator 阶段一,有一个与动画方向相反的偏移量,阶段二,折返到目标位置

AnticipateOvershootInterpolator  阶段一,有一个与动画方向相反的偏移量,阶段二,折返到目标位置后有一个与动画方向相同的溢出量,阶段三,回到目标位置

BounceInterpolator 类似自由落体的乒乓球的振幅逐渐减小的振动效果,最终到目标位置

CycleInterpolator 类似弹性很强的球,其弹起的高度将超过初始高度,最终回到初始位置,不是回到目标位置,位移量的作用是确定动画的波峰和波谷

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

LinearInterpolator 匀速

OvershootInterpolator 溢出效果


 Accelerate 加快

 Decelerate 减速  
 Interpolator 插补器
 Anticipate 预期--->先偏移
 Overshoot 超出--->溢出
 Bounce 反弹
 Cycle 循环
 Linear 线性


自定义:通过new一个Interpolator并override其getInterpolation(float input)方法自定义

0 0
原创粉丝点击