Android的动画基本分类

1、Android动画可以分为帧动画(Frame Animation)、补间动画(Tweened Animation)和属性动画。
比较:
a、属性动画是真正的实现了view的移动,补间动画对view的移动更像是在不同地方绘制了一个影子,实际的对象还是处于原来的地方。
b、属性动画会使Activity无法释放而导致内存泄漏,而补间动画却没有问题。因此,使用属性动画时切记在Activity执行 onStop 方法时顺便将动画停止。
c、xml 文件实现的补间动画,复用率极高。在Activity切换,窗口弹出时等情景中有着很好的效果。
d、使用帧动画时需要注意,不要使用过多特别大的图,容易导致内存不足。
2、 帧动画 ,最容易实现的一种动画,这种动画更多的依赖于完善的UI资源,他的原理就是将一张张单独的图片连贯的进行播放,从而在视觉上产生一种动画的效果,可以说,图片资源决定了这种方式可以实现怎样的动画。有点类似于某些软件制作gif动画的方式。
注:android:oneshot="false" ,这个oneshot 的含义就是动画执行一次(true)还是循环执行多次。
3、 补间动画 ,可以分为四种形式,分别是 alpha(淡入淡出),translate(位移),scale(缩放大小),rotate(旋转)。补间动画的实现,一般会采用xml 文件的形式,代码会更容易书写和阅读,同时也更容易复用;动画的属性值需要动态的调整时,需要使用java代码实现。可以使用set 标签将多个动画组合。
部分动画属性的含义:
Interpolator 主要作用是可以控制动画的变化速率 ,就是动画进行的快慢节奏。
pivot 决定了当前动画执行的参考位置。pivot 这个属性主要是在translate 和 scale 动画中,这两种动画都牵扯到view 的“物理位置“发生变化,所以需要一个参考点。而pivotX和pivotY就共同决定了这个点;它的值可以是float或者是百分比数值。
4、 属性动画 ,顾名思义它是对于对象属性的动画。因此,所有补间动画的内容,都可以通过属性动画实现。属性动画实现很方便,同时动画可变化的值也有了更多的选择,动画所能呈现的细节也更多。属性动画可以使用xml文件的方式实现,但是属性动画的属性值一般会牵扯到对象具体的属性,更多是通过代码动态获取。
ObjectAnimator ,这个类继承自ValueAnimator,使用这个类可以对任意对象的任意属性进行动画操作,而ValueAnimator是整个属性动画机制当中最核心的一个类。
属性动画的运行机制 是通过不断地对值进行操作来实现的,而初始值和结束值之间的动画过渡就是由ValueAnimator这个类来负责计算的。它的内部使用一种时间循环的机制来计算值与值之间的动画过渡,我们只需要将初始值和结束值提供给ValueAnimator,并且告诉它动画所需运行的时长,那么ValueAnimator就会自动帮我们完成从初始值平滑地过渡到结束值这样的效果。除此之外,ValueAnimator还负责管理动画的播放次数、播放模式、以及对动画设置监听器等。
属性动画的具体实现 ,通过duration、startPropertyValue和endPropertyValue 等值,我们就可以定义动画运行时长,初始值和结束值,然后通过start方法开始动画,ValueAnimator是由TypeEvaluator 和TimeInterpolator 共同实现从初始值平滑过渡到结束值的。具体来说,TypeEvaluator 决定了动画如何从初始值过渡到结束值。
TimeInterpolator 决定了动画从初始值过渡到结束值的节奏。
TimeInterpolator ,是用来控制动画快慢节奏的。TimeInterpolator 继承自Interpolator。我们可以继承TimerInterpolator 以自己的方式控制动画变化的节奏,也可以使用Android 系统提供的Interpolator,通过setInterpolator 设置不同的Interpolator。


你可能感兴趣的:(Android的动画基本分类)