Android动画笔记

来源:互联网 发布:杨千嬅 知乎 编辑:程序博客网 时间:2024/06/02 04:05

1、动画分类

1、动画分为两种类型:

1)Property Animation:属性动画

通过该修改object的属性来实现动画效果,通过Animator类实现;

2)View Animation:视图动画,分为两种类型:

①Tween animation: 补间动画,通过在单张图片进行一系列变换来实现动画效果,通过Animation类实现;

②Frame animation: 帧动画,通过顺序播放多张图片来实现动画效果,通过AnimationDrawable类实现;

2、属性动画

1、代码实现

①Animator类,常用方法有:

addListener():添加监听器,监听animation的start,repeat,end,cancel事件;

addPauseListener():添加暂停监听器,监听animation的pause事件;

setDuration():设置animation持续的时间;

setInterpolator():设置插值器;

start():开始动画;

Animator的子类有AnimatorSet,ValueAnimator

②AnimatorSet类:按照一定的顺序播放集合中的Animator

playSequentially():创建顺序播放的animation

playTogether():创建同时播放animation

setDuration():设置持续的时间

setInterpolator():设置插值器;

start();开始动画;

2、XML实现

资源文件位置:res/animator/filename.xml

资源引用:在java代码中引用:R.animator.filename

在XML文件中引用:@[package:]animator/filename

语法:

<set  android:ordering=["together" | "sequentially"]>    <objectAnimator        android:propertyName="string"        android:duration="int"        android:valueFrom="float | int | color"        android:valueTo="float | int | color"        android:startOffset="int"        android:repeatCount="int"        android:repeatMode=["repeat" | "reverse"]        android:valueType=["intType" | "floatType"]/>    <animator        android:duration="int"        android:valueFrom="float | int | color"        android:valueTo="float | int | color"        android:startOffset="int"        android:repeatCount="int"        android:repeatMode=["repeat" | "reverse"]        android:valueType=["intType" | "floatType"]/>    <set>        ...    </set></set>
之后,在java代码中通过以下代码加载动画资源:

AnimatorSet set = (AnimatorSet)AnimatorInflater.loadAnimator(myContext,R.anim.property_animator);set.setTarget(myObject);set.start();

3、补间动画

1、代码实现

ViewAnimation的子类包括:

AlphaAnimation:淡入淡出,改变透明度

RotateAnimation:旋转

ScaleAnimation:尺寸拉伸

TranslateAnimation:位置移动

AnimationSet

方法举例:setInterpolator(Interpolator i)、start()、cancel(),参见API。

2、XML实现

资源文件位置:res/anim/filename.xml

资源应用:在Java代码中引用:R.anim.filename

在XML文件中引用:@[package:]anim/filename

语法:

<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android="http://schemas.android.com/apk/res/android"  android:interpolator="@[package:]anim/interpolator_resource"  android:shareInterpolator=["true" | "false"] >  <alpha      android:fromAlpha="float"      android:toAlpha="float" />   <scale      android:fromXScale="float"      android:toXScale="float"      android:fromYScale="float"      android:toYScale="float"      android:pivotX="float"      android:pivotY="float" />  <translate      android:fromXDelta="float"      android:toXDelta="float"      android:fromYDelta="float"      android:toYDelta="float" />  <rotate      android:fromDegrees="float"      android:toDegrees="float"      android:pivotX="float"      android:pivotY="float" />   <set>      ...  </set></set>

之后,在java代码中通过以下代码加载动画资源:
ImageView image =(ImageView)findViewById(R.id.image);Animation hyperspaceJump=AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);image.startAnimation(hyperspaceJump);

4、帧动画

1、代码实现

AnimationDrawable类常用方法:

addFrame(Drawable frame, int duration)

getFrame(int index)

start()

inflate(Resources r, XmlPullParserparser,AttributeSet attrs, Resources.Theme theme)

2、XML实现

文件位置:res/drawable/filename.xml

资源引用:在java代码中引用:R.drawable.filename

在XML文件中引用:@[package:]drawable.filename

语法

<?xmlversion="1.0"encoding="utf-8"?><animation-listxmlns:android="http://schemas.android.com/apk/res/android"  android:oneshot=["true" | "false"] >  <item      android:drawable="@[package:]drawable/drawable_resource_name"      android:duration="integer" /></animation-list>
之后,在java代码中通过以下代码加载动画资源:

ImageView rocketImage =(ImageView)findViewById(R.id.rocket_image);rocketImage.setBackgroundResource(R.drawable.rocket_thrust);rocketAnimation =(AnimationDrawable)rocketImage.getBackground();rocketAnimation.start(); 

5、插值器Interpolator

插值器是用来控制动画变化的速度的,可用于属性动画,补间动画。

Android中的插值器都是Intepolator的子类,对每一个插值器类,都有一个公共的资源文件与它对应,您可以在XML文件中通过android:interpolator属性来引用。

常用的插值器有:AccelerateInterpolator、DecelerateInterpolator、AccelerateDecelerateInterpolator等,参见API。

自定义Intepolator:

资源文件位置:res/anim/filename.xml

资源引用:在XML文件中引用: @[package:]anim/filename

语法:

<?xmlversion="1.0"encoding="utf-8"?><InterpolatorNamexmlns:android="http://schemas.android.com/apk/res/android"  android:attribute_name="value"/>
在标签内可引用以下标签进行自定义Intepolator

<accelerateInterpolator>android:factor(动画加速的速度)

<anticipateInterpolator>android:tension

<decelerateInterpolator>android:factor

6、属性动画其他内容

Animator.AnimatorListener

ValueAnimator.AnimatorUpdateListener

TypeEvaluator:属性动画的值计算器



原创粉丝点击