为了弥补Tween动画的不足,Android3.0,API11以后引入了Property动画
为了兼容android2.3,可以用NineOldAndroids,直接将jar放进项目里面就行了
Property动画与Tween动画差异:
1:Tween动画只能施加到View对象,而Property动画可以施加到任何对象
2:Tween动画只是绘制效果动画,View的真正属性没有改变
3:Tween动画代码量少,使用简单
animator有两个子类 集合动画与值动画
而值动画下面有对象动画和时间动画
一般使用ObjectAnimator
Animator API:
setDuration(long duration) 设置动画时长 xml设置android:duration
setInterpolator(TimeInterpolator v) 插值器 xml中设置android:interpolator
setStartDelay(long startDelay) 调用start延迟开始 xml中设置android:startoffset
setTarget(Object target) 动画对象
valueAnimator API:
setRepeatMode(int value) 重复模式 xml中 android:repeatMode
setRepeatCount(int value) 重复次数 xml中 android:repeatCount
ofArgb(int...l value) int或者color类型 android:valueForm
ofint(int... value) int或者color类型 android:valueTo
ogFloat(float.... values) android:valueType
setFrameDelay(long frameDelay) 多少时间刷新一次,默认10毫秒
ObjectAnimator API:
setPropertyName(String name) android:propertyName String类型,必须要设置节点属性
动画刷新的过程中会不断的更新该属性,所以对象必须提供该熟悉的处理方法(getXXX,setXXX)
属性:x,y,rotation,rotationX,rotationY,scaleX,scalY,alpha,translationX和translationY
AnimationSet
动画集合
playSequentially()/playTogether() android:ordering 子动画是先后有序还是同时进行
实现属性动画的方式有两种:
1:xml(TimeAnimator不支持)
res/animator/
AnimatorInflator.loadAnimator(myContext,R.animator.example)
java 方式:
如:
ObjectAnimator anim = ObjectAnimator.ofFloat(v, "translationY", 15 * (v.getHeight())); anim.setDuration(2000); anim.start();
3.0之后新增了一些View的属性:
1:translationX和translationY:这两个熟悉控制了View所处的位置,他们的值是由layout容器设置的,view的左顶点 相对于 屏幕原点(0,0)的 x|y 方向值
2: rotation,rotationX和rotattionY:控制View绕着轴点(pivotX和pivotY)旋转,它的表现跟Tween Animation中的rotateAnimation一致
RotateAnimation的旋转,表现平面的旋转
而rotationX,Y旋转,是立体的旋转,默认是以View的中心点,做rotation(x,y)过中心点的执行,面向该直线进行翻转
3:scaleX和scaleY:控制View给予pivotX和pivotY的缩放
4:pivotX和pivotY:旋转的轴点和缩放的基点,默认是view的中心
5:x和y:描述了view在其父容器的最终位置,是左上角坐标和偏移量(translationX,translationY)的和
6:alpha:透明度,1是完全不透明,0是完全透明