动画

类型

补间动画

视图动画的作用对象是View,支持四种动画效果,分别是平移,缩放,旋转,透明度

名称
标签
子类
效果

平移动画

< translate >

TranslateAnimation

移动View

缩放动画

< scale >

ScaleAnimation

方法或缩小View

旋转动画

< rotate >

RotateAnimation

旋转view

透明度动画

< alpha >

AlphaAnimation

改变View的透明度

补间动画执行之后并未改变View的真实布局属性值。切记这一点,譬如我们在Activity中有一个 Button在屏幕上方,我们设置了平移动画移动到屏幕下方然后保持动画最后执行状态呆在屏幕下方,这时如果点击屏幕下方动画执行之后的Button是没 有任何反应的,而点击原来屏幕上方没有Button的地方却响应的是点击Button的事件。

问题:只能作用在View上,只有4种效果;只改变了View视觉效果,未改变View真实效果。

帧动画

帧动画是顺序播放一组预先定义好的图片,AnimationDrawable来使用帧动画。

AnimationDrawable animationDrawable = (AnimationDrawable) view.getBackground();
animationDrawable.start();

属性动画

作用对象:任意 Java 对象,即不再局限于 视图View对象

动画效果:可自定义各种动画效果,即不再局限于4种基本变换:平移、旋转、缩放 & 透明度

属性动画

主要涉及ValueAnimator,ObjectAnimator

ValueAnimator原理:通过不断控制 值 的变化,再不断 手动 赋给对象的属性,从而实现动画效果。类中有3个重要方法:

ObjectAnimator继承自ValueAnimator类。原理:直接对对象的属性值进行改变操作,从而实现动画效果。继承自ValueAnimator

ValueAnimator & ObjectAnimator 区别

二者都属于属性动画,本质上都是一致的:先改变值,然后 赋值 给对象的属性从而实现动画效果。

但二者的区别在于:ValueAnimator 类是先改变值,然后 手动赋值 给对象的属性从而实现动画;是 间接 对对象属性进行操作;

ValueAnimator 类本质上是一种 改变 值 的操作机制

ObjectAnimator类是先改变值,然后 自动赋值 给对象的属性从而实现动画;是 直接 对对象属性进行操作;

可以理解为:ObjectAnimator更加智能、自动化程度更高

Last updated