Android——Animation 动画

2017-11-05  本文已影响0人  pkqgo

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

图片.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(基于弹簧物理原理的动画效果)

上一篇 下一篇

猜你喜欢

热点阅读