1.帧动画(Frame Animation)
属于视图动画,Android1.0引入,Frame Animation命名为AnimationDrawable
2.补间动画(Tween Animation)
属于视图动画,Android1.0引入,在包android.view.animation下
3.属性动画(Property Animation)
Android3.0开始引入,在包android.animation下
4.物理动画(Physics-based Animations)
2017 Google IO大会提出
一、帧动画(Frame Animation)
1、用xml文件实现
1.xml文件位置 res/drawable/。
//xml代码
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item
android:drawable="@drawable/g1"
android:duration="200" />
<item
android:drawable="@drawable/g2"
android:duration="200" />
<item
android:drawable="@drawable/g3"
android:duration="200" />
</animation-list>
//java代码
//将控件背景设置为我们的AnimationDrawable资源文件
image.setBackgroundResource(R.drawable.frame);
mBinding.play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//拿到要编译成AnimationDrawable的背景
AnimationDrawable imageAnimation = (AnimationDrawable)image.getBackground();
//开始动画
imageAnimation.start();
}
});
2.用java代码实现
二、补间动画(Tween Animation)
1.用xml动画文件实现
1.动画文件位置res/anim
2.用java代码实现
3.类型
alpha:透明度渐变动画效果
scale:尺寸变化动画效果
translate:位置移动动画效果
rotate:转移旋转动画效果
4.Animation类
直接子类
AnimationSet:代表着一组可以一起播放的动画。
AlphaAnimation:控制一个对象透明度的动画。
RotateAnimation:控制一个对象旋转的动画。
ScaleAnimation:控制一个对象尺寸的动画。
TranslateAnimation:控制一个对象位置的动画。
三、属性动画(Property Animation)
1.原理
由TimeInterpolator(插值器)和TypeEvaluator(求值器)完成。
TimeInterpolator计算时间因子,即动画运行速度,TypeEvaluator计算出具体的属性值,再通过AnimatorUpdateListener监听器里的getAnimatedValue()来获取最新属性值,来实现View具体某个属性值的动画改变。
2.属性动画类型
ValueAnimator 针对值变化的Animator。
ObjectAnimator 针对Object变化的Animator。
AnimatorSet 运行一组Animator的集合。
3.Interpolators插值器
TimeInterpolator Animator的插值器接口
4.Evaluators求值器
TypeEvaluator 求值器接口,所有求值器必须实现该接口。
IntEvaluator 计算Int类型的求值器。
FloatEvaluator 计算Float类型的求值器。
ArgbEvaluator 计算颜色值类型的求值器。
四、物理动画
1.原理
动画由力驱动
力决定了动画的加速和减速
在每一帧中动画值和速度都会更新
当受力达到平衡时动画停止