Android——Animation 动画

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代码


    
    
    


//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

Android——Animation 动画_第1张图片
图片.png

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.原理

动画由力驱动
力决定了动画的加速和减速
在每一帧中动画值和速度都会更新
当受力达到平衡时动画停止

2.FlingAnimation(基于初始动能并逐渐减弱的动画效果)

3.SpringAnimation(基于弹簧物理原理的动画效果)

你可能感兴趣的:(Android——Animation 动画)