您的位置:首页 > 其它

安卓动画小结

2016-02-17 11:46 225 查看
Android系统在一开始的时候就给我们提供了两种实现动画效果的方式,逐帧动画(frame-by-frame animation)和补间动画(tweened animation)。

逐帧动画实就是将一个完整的动画拆分成一张张单独的图片,然后再将它们连贯起来进行播放,类似于动画片的工作原理;补间动画则是可以对View
进行一系列的动画操作,包括淡入淡出、缩放、平移、旋转四种。补间动画只能对view进行。

对于非View的对象进行动画,我们需要用到属性动画,比如说我们有一个自定义的View,在这个View当中有一个Point对象用于管理坐标,然后在onDraw()方法当中就是根据这个Point对象的坐标值来进行绘制的,我们可以对Point对象进行动画操作,那么整个自定义View的动画效果就有了。

补间动画只是改变了View的显示效果而已,而不会真正去改变View的属性。比如说,现在屏幕的左上角有一个button,然后我们通过补间动画将它移动到了屏幕的右下角,当我们点击一下这个button,点击事件是绝对不会触发的,因为实际上这个按钮还是停留在屏幕的左上角,只不过补间动画将这个按钮绘制到了屏幕的右下角而已。而属性动画是可以正真的将button移动到了右下角,

点击效果可以被触发。
Android在3.0版本引入了属性动画。

主要有两个个类:ValueAnimator,ObjectAnimator。
ValueAnimator是根据时间,动画开始值和结束值来返回在该时间内的值,这样就完成开始值到结束值之间的平滑过渡。

它还负责管理动画的播放次数、播放模式、以及对动画设置监听器等。

ObjectAnimator可以直接对任意对象的任意属性进行动画操作的,比如说View的alpha属性。ObjectAnimator低层的动画实现机制也是基于ValueAnimator来完成的。

ObjectAnimator现实动画常用方法:

ObjectAnimator.ofFloat(Object target,String propertyName,float... values)
ObjectAnimator.ofInt(Object target,String propertyName,float... values)

target目标View或其他对象,propertyName操作属性名称(),values操作值可以是多个。

操作属性值:
1)translationX
和 translationY:这两个属性控制了View所处的位置,它们的值是由layout容器设置的,是相对于坐标原点(0,0左上角)的一个偏移量。

2)rotation, rotationX 和 rotationY:控制View绕着轴点(pivotX和pivotY)旋转。

3)scaleX 和 scaleY:控制View基于pivotX和pivotY的缩放。

4)pivotX 和 pivotY:旋转的轴点和缩放的基准点,默认是View的中心点。

5)x 和 y:描述了view在其父容器中的最终位置,是左上角左标和偏移量(translationX,translationY)的和。

6)aplha:透明度,1是完全不透明,0是完全透明。

ViewPropertyAnimator在3.1系统后增加的一个类,view.animate()方法返回这个对象,该对象就可以调用各种属性动画方法。
view.animate().alpha(0.4f).setDuration().setListener().setInterpolater();
动画包含渐变、缩放、位移、旋转。可设置动画时间,过程监听,插值器。
ViewPropertyAnimator源码说明是:对多个动画组合在一起的需求,比较适合该类的使用。如果是一个或者两个动画使用ObjectAnimator比较好。

If only one or two properties on a View object are being animated, then using an
* {@link android.animation.ObjectAnimator} is fine;

But if several properties are animated simultaneously, or if you just want a
* more convenient syntax to animate a specific property, then ViewPropertyAnimator might be
* more well-suited to the task.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: