逐帧动画 Frame Animation
xml资源方式实现:将每一帧图片存放在 res/drawable 通过 res/anim
代码方式实现:通过AnimationDrawable
补间动画 Tween Animation 对目标定义动画开发和结束这两个关键帧的动画
包括四个效果:透明Alpha ,大小变化Scale ,位移变化Translate ,旋转变化Rotate
插值器 Interpolator
interpolator 负债控制动画的变化速度,实现上面四种效果能够均速,加速,减速,抛物线多种速度变化效果
Interpolator 被用来修饰动画效果,定义动画的变化率,可以使存在的动画效果accelerated(加速),decelerated(减速),repeated(重复),bounced(弹跳)等。
- AccelerateDecelerateInterpolator 在动画开始与结束的地方速率改变比较慢,在中间的时候加速
- AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
- AnticipateInterpolator 开始的时候向后然后向前甩
- AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值
- BounceInterpolator 动画结束的时候弹起
- CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
- DecelerateInterpolator 在动画开始的地方快然后慢
- LinearInterpolator 以常量速率改变
- OvershootInterpolator 向前甩一定值后再回到原来位置
Animation 动画类型
四种类型组成:
XML中
alph | 渐变透明度动画效果 |
scale | 渐变尺寸伸缩动画效果 |
translate | 画面转换位置移动动画效果 |
rotate | 画面转移旋转动画效果 |
JavaCode中
AlphaAnimation | 渐变透明度动画效果 |
ScaleAnimation | 渐变尺寸伸缩动画效果 |
TranslateAnimation | 画面转换位置移动动画效果 |
RotateAnimation | 画面转移旋转动画效果 |
Android动画模式
Animation主要有两种动画模式:
一种是tweened animation(渐变动画)
XML中 | JavaCode |
alpha | AlphaAnimation |
scale | ScaleAnimation |
一种是frame by frame(画面转换动画)
XML中 | JavaCode |
translate | TranslateAnimation |
rotate | RotateAnimation |
Anroid属性动画 Property Animation
属性动画通过修改物件的属性值以达到动画效果。
类名 | 用途 |
ValueAnimator | 属性动画主要的计时器,也计算动画后的属性的值,动画的执行类 |
ObjectAnimator | ValueAnimator的一个子类,允许你设置一个目标对象和对象的属性进行动画,动画的执行类 |
AnimatorSet | 提供组织动画的结构,使它们能相关联得运行,用于控制一组动画的执行 |
AnimatorInflater | 用户加载属性动画的xml文件 |
Evaluators | 属性动画计算器,告诉了属性动画系统如何计算给出属性的值 |
Interpolators | 动画插入器,定义动画的变化率 |
上面几个重要类之间的关系如下图所示:
ObjectAnimator 相关属性设置:
- duration 表示动画执行的时间
- propertyName 表示修改的物件的哪个属性值,这里是透明度
- valueFrom 表示从哪个状态值开始动画
- valueTo 表示到哪个状态值结束动画
- valueType 类型估值,主要用于设置动画操作属性的值
- repeatMode 表示重复的模式 reverse表示
- repeatCount 动画重复的计数,动画将会执行该值+1次
- repeatMode 动画重复的模式,reverse为反向,当第偶次执行时,动画方向会相反。restart为重新执行,方向不变
- startOffset, 动画多次执行的间隔时间,如果只执行一次,执行前会暂停这段时间,单位毫秒
- interpolator 指定动画插入器