android动画分为Tween(补间动画)、 Frame(帧动画)、 property(属性动画)。其中属性动画是android3.0之后的新特性。
作用场景:
帧动画:由于是播放帧,每一帧都要有图片,这会导致我们的项目包会变的很庞大,
但当我们对于一个动画很难找到其的规律时候,或者其他动画很难替代它的时候
我们会采用它。比如:美团、顺丰loading动画等。(我们App首页面加载)。
补间动画:作用于简单的平移、透明度、旋转、缩放,只做效果,动画执行完毕之后
属性没有改变。
属性动画:属性动画可以实现补间动画的上述效果之外,还可以改变其他属性。但是
和补间动画还是有着本质区别。以下会详细介绍。
一:Tween 动画又称为View Animation:
1、作用于View 对象。只改变View的位置不改变View的本身属性。包括:Translate(平移)、Scale(缩放)、Rotate(旋转)、Alpha(透明)。
2、对于一个View可以同时设置多种动画,多种动画可以一起进行也可以顺序进行。动画建议写在xml文件中,因为复用方便。
写在“res/anim/动画文件”中的动画,XML文件的根元素可以为<alpha>,<scale>,<translate>,<rotate>,interpolator元素或<set>(表示以上几个动画的集合,set可以嵌套)。
默认情况下就是同时进行,可以通过设置startOffset属性设置各个动画的顺序播放效果。
3、可以通过设置interpolator属性改变动画的渐变方式,如AccelerateInterpolator逐渐加快。默认为AccelerateDecelerateInterpolator。
ForExample:
ImageView imageView = (ImageView)findViewById(R.id.imageView);
Animation titleAnimation=AnimationUtils.loadAnimation(this, R.anim.title_animation);
imageView .startAnimationtitleAnimation
二、Frame动画又称为Drawable Animation:
帧动画就是按照帧去播放的动画,通过一系列的Drawable依次播放动画。这个没什么好说的直接举例子:
ForExample:XML例子:animation_1.xml.
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="true">
<item android:drawable="@drawable/tu1" android:duration="300" />
<item android:drawable="@drawable/tu2" android:duration="300" />
<item android:drawable="@drawable/tu3" android:duration="300" />
......
</animation-list>
JAVA CODE
ImageView imageView = (ImageView) findViewById(R.id.imageView);
imageView.setBackgroundResource(R.drawable.animation_1);
这样就可以实现动画的播放,如相对动画控制可以通过 anim = (AnimationDrawable) imageView.getBackground();获取对象就行控制。
注意事项:就是在start()之前调用stop()。如果启动Activity就调用的话,应该写的onWindowFoucsChanged()方法中start()而不是oncreate()。
Android 属性动画(Property Animation):
出现的原因:a.属性动画可以使得View的属性改变,补间动画做不到(比如放大之后View的点击位置)。
b.补间动画作用对象只能是View,做多种操作(比如3D,颜色值的改变)。
c.补间动画只能做4种类操作(或者集合操作),属性动画可以作用View之外的其他对象(point)。
属性动画相关属性
Duration动画的持续时间,默认300ms。
Time interpolation:时间差值器,定义动画的变化率。
Repeat count and behavior:重复次数、以及重复模式;可以定义重复多少次;重复时从头开始,还是反向。
Animator sets: 动画集合,你可以定义一组动画,一起执行或者顺序执行。
Frame refresh delay:帧刷新延迟,对于你的动画,多久刷新一次帧;默认为10ms,但最终依赖系统的当前状态;基本不用管。
属性动画相关类:
ObjectAnimator 动画的执行类,继承ValueAnimator 。
ValueAnimator 动画的执行类,继承Animator。
AnimatorSet 用于控制一组动画的执行:线性,一起,每个动画的先后执行等。
AnimatorInflater 用户加载属性动画的xml文件
TypeEvaluator 类型估值,主要用于设置动画操作属性的值。