我们都知道Android 动画分为 帧动画,补间动画,属性动画
那么它们有什么区别呢,我们先了解这三个动画的定义和实现方式
一 帧动画
需要制定好动画每一帧,系统一帧一帧的播放图片。
实现:
1 代码实现: AnimationDrawable
2 布局实现: 直接在工程drawable目录新建animation-list标签
二 补间动画
View动画定义了渐变Alpha、旋转Rotate、缩放Scale、平移Translate四种基本动画,并且通过这四种基本动画的组合使用,可以实现多种交互效果.
实现:
1 代码实现: AlphaAnimation、RotateAnimation、ScaleAnimation、TranslateAnimation四个动画类
组合 : AnimationSet
2 布局实现: 直接在工程drawable目录新建animation-list标签,然后AnimationUtils.loadAnimation() 加载动画
三 属性动画
就是通过改变view对象Object的属性来实现动画的过程。
实现:
1 代码实现: ObjectAnimator是最常用的属性动画执行类。通过AnimatorSet创建动画集.
2 布局实现: 直接在工程drawable目录新建动画xml, set标签包括objectAnimator实现动画集,和objectAnimator标签单独使用,然后AnimatorInflater.loadAnimator调用
三种动画介绍完了,那么下面简单介绍下 自定义动画的插值器和估值器
插值器的作用是:
决定值的变化规律(如:匀速、加速),即决定的是变化趋势
估值器的作用是:
决定动画的具体变化数值
实现大体流程:
自定义插值器:补间动画和属性动画实现的接口有些许不动
1 补间动画: 实现 Interpolator接口;
属性动画: 实现TimeInterpolator接口
2 并且重写getInterpolation().
自定义估值器
自定义估值器需要实现 TypeEvaluator接口并重写 evaluate(), 其中evaluate是插值器的方法 插值器里面 getInterpolator 的返回值.