注意:本篇文章是本人阅读关于Android动画的文章所写下的总结,方便以后查阅,所有内容非原创,侵权删。
本篇文章内容来自于
- Android高级进阶 顾浩鑫
- Android自定义控件三部曲文章索引之动画篇
目录
1.动画分类与区别
2.逐帧动画 FrameAnimation/DrawableAnimation
3.补间动画 TweenAnimation (基类Animation)
--3.1 AlphaAnimation 透明度动画
--3.2 TranslateAnimation 位置移动动画
--3.3 RotateAnimation 旋转动画
--3.4 ScaleAnimation 缩放动画
--3.5 AnimationSet 动作合集
--3.6 插值器Interpolator(自定义部分待补)
--3.7 自定义补间动画(待补)
4.属性动画PropertyAnimation(基类Animator)
--4.1 ValueAnimator(属性动画最重要的类)
----4.1.1 ValueAnimator构造函数
----4.1.2 ValueAnimator常用方法
----4.1.3 ValueAnimator监听器(2种)
----4.1.4 ValueAnimator代码实现(5种)
----4.1.5 首先理解interpolator和Evaluator的功能和关系
----4.1.6 interpolator插值器(系统+自定义)
----4.1.7 Evaluator(系统+自定义)
--4.2 ObjectAnimator(ValueAnimator的子类 实际开发中最常用)
--4.3 AnimatorSet
----4.3.1 同时开始动画 playTogether
----4.3.2 逐个开始动画 playSequentially
----4.3.3 自由决定动画开始的顺序 AnimatorSet.Builder
------4.3.3.1 获取AnimatorSet.Builder实例
------4.3.3.2 AnimatorSet.Builder的设置动画顺序的函数
------4.3.3.3 AnimatorSet.Builder使用方式2种
------4.3.3.4 AnimatorSet.Builder实现代码
----4.3.4 AnimatorSet监听器
----4.3.5 AnimatorSet的函数
1.动画分类与区别
1.1 动画出现时间
Android3.0之前 逐帧动画+补间动画
Android3.0 属性动画
1.2 动画分类
Android动画分为动画View Animation(视图动画)和Property Animator(属性动画);
View Animation包括Tween Animation(补间动画)和Frame Animation(逐帧动画); 也就是传统动画。
Property Animator包括ValueAnimator和ObjectAnimation;
首先,直观上,他们有如下三点不同:
1、引入时间不同:View Animation是API Level 1就引入的。Property Animation是API Level 11引入的,即Android 3.0才开始有Property Animation相关的API。
2、所在包名不同:View Animation在包android.view.animation中。而Property Animation API在包 android.animation中。
3、动画类的命名不同:View Animation中动画类取名都叫XXXXAnimation,而在Property Animator中动画类的取名则叫XXXXAnimator
1.2 每种动画的特点
1⃣️逐帧动画主要是用来实现动画的
逐帧动画:指定每一帧对应的图片和持续的时间
2⃣️补间动画才能实现控件的渐入渐出、移动、旋转和缩放的
补间动画:只需要定义动画的开始和结束的两个关键帧,并指定动画变化的时间和方式等,然后交由Android系统进行计算。Android系统通过在两个关键帧之间插入渐变值来实现平滑过渡,从而对view的内容完成一系列的图形变化来实现的动画效果。
3⃣️Property Animator呢?和补间动画有什么区别?
1.Property Animator能实现补间动画无法实现的功能,比如改变颜色
2.View Animation仅能对指定的控件做动画,而Property Animator是通过改变控件某一属性值来做动画的。
3.补间动画虽能对控件做动画,但并没有改变控件内部的属性值。而Property Animator是通过改变控件内部的属性值来达到动画效果的。
其中ObjectAnimator和ValueAnimator在构造实例时最大的不同是需要指定动画作用的具体对象和对象的属性名,而且一般不用注册AnimatorUpdateListener监听器