动画资源
动画资源可以定义两种类型的动画中的一者:
属性动画
通过以上的时间的漫画家规定的期限修改对象的属性值创建一个动画。
观看动画
有两种类型的动画,你可以认为动画框架做的:
吐温动画:通过与动画的单个图像进行一系列的变换创建一个动画
帧动画:或通过示出,以便与一个AnimationDrawable图像的序列创建动画。
物业动画
在XML中定义的动画来修改目标对象的性质,例如背景颜色或阿尔法值,在设定的时间量。
文件位置:
RES /动画/ filename.xml中
文件名将用作资源ID。
编译的资源数据类型:
资源指针ValueAnimator,ObjectAnimator或AnimatorSet。
资源引用:
在Java:R.animator.filename
在XML:@ [包:]动画/文件名
句法:
<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>
该文件必须有一个根元素:要么<SET>,<objectAnimator>或<valueAnimator>。您可以将动画元素一起<设置>元素中,包括其他<set>元素。
ELEMENTS:
<set>
持有其他动画元素的容器(<objectAnimator>,<valueAnimator>或其他<设置>元素)。表示一个AnimatorSet。
您可以指定嵌套的<设置>标签来进一步群的动画在一起。每个<SET>可以定义自己的排序属性。
属性:
android:ordering
关键词。指定动画在此设置播放顺序。
值说明
顺序播放动画在这组顺序
together(默认值),同时在玩这一套动画。
<objectAnimator>
动画对象的结束时间的特定量的特定属性。表示一个ObjectAnimator。
属性:
android:propertyName
串。需要。该对象的属性进行动画,它的名字引用。例如,您可以指定一个视图对象“阿尔法”和“的backgroundColor”。该objectAnimator元素不暴露目标属性,但是,这样你就可以不设置在XML声明动画的对象。您可以通过调用loadAnimator(充气动画XML资源),并调用setTarget()来设置包含此属性的目标对象。
android:valueTo
float,int或颜色。
.
Required。其中动画属性的结束值。颜色被表示为六位十六进制数(例如,#333333)。
android:valueFrom
浮动,int或颜色。其中动画属性开始的值。如果没有指定,动画开始于由物业的get方法得到的值。颜色被表示为六位十六进制数(例如,#333333)。
android:duration
int类型。在动画毫秒的时间。 300毫秒是默认的。
android:startOffset
int类型。毫秒开始后动画延迟()的量被调用。
android:repeatCount
int类型。多少次重复的动画。设置为“-1”,以无限重复,或者一个正整数。例如,“1”值意味着动画动画的初始运行后重复一次,所以在动画中起着共两次。默认值是“0”,这意味着没有重复。
android:repeatMode
int类型。如何当到达动画结尾的动画表现。安卓的repeatCount必须被设置为正整数或“-1”这个属性有效果。设置为“反向”每次迭代具有动画相反方向或“重复”具有从每次开始动画循环。
android:valueType
关键词。如果值是颜色不指定此属性。动画框架自动处理颜色值
值说明
IntType上指定动画的值是整数
floatType(默认)指定动画的值是浮点数
<
animator>
进行过指定的时间量的动画。代表ValueAnimator。
属性:
android:valueTo
float,int或颜色。需要。其中,动画结束的值。颜色被表示为六位十六进制数(例如,#333333)。
android:valueFrom
浮动,int或颜色。需要。其中动画的开始值。颜色被表示为六位十六进制数(例如,#333333)。
android:duration
int类型。在动画毫秒的时间。 300ms的是默认的。
android:startOffset
int类型。毫秒开始后动画延迟()的量被调用。
android:repeatCount
int类型。多少次重复的动画。设置为“-1”,以无限重复,或者一个正整数。例如,“1”值意味着动画动画的初始运行后重复一次,所以在动画中起着共两次。默认值是“0”,这意味着没有重复。
android:repeatMode
int类型。如何当到达动画结尾的动画表现。安卓的repeatCount必须被设置为正整数或“-1”这个属性有效果。设置为“反向”每次迭代具有动画相反方向或“重复”具有从每次开始动画循环。
android:valueType
关键词。如果值是颜色不指定此属性。动画框架自动处理颜色值。
值说明
IntType上指定动画的值是整数
floatType(默认)指定动画的值是浮点数
例:
在保存RES /动画/ property_animator.xml XML文件:
<set android:ordering="sequentially">
<set>
<objectAnimator
android:propertyName="x"
android:duration="500"
android:valueTo="400"
android:valueType="intType"/>
<objectAnimator
android:propertyName="y"
android:duration="500"
android:valueTo="300"
android:valueType="intType"/>
</set>
<objectAnimator
android:propertyName="alpha"
android:duration="500"
android:valueTo="1f"/>
</set>
为了运行这个动画,必须在代码中的AnimatorSet对象填充XML资源,然后开始动画集之前为所有动画的目标对象。调用设定目标()设置为AnimatorSet的所有子作为一种方便的单一目标对象。下面的代码演示如何做到这一点:
AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext,
R.anim.property_animator);
set.setTarget(myObject);
set.start();
也可以看看:
物业动画
API演示了如何使用属性动画系统的例子。
观看动画
视图动画框架支持吐温和逐帧动画,可以在两个XML声明。下面的章节描述了如何使用这两种方法。
吐温动画
在XML中定义的动画执行过渡,例如旋转,衰落,移动和拉伸上的图形。
文件位置:
RES /动画/ filename.xml中
文件名将用作资源ID。
编译的资源数据类型:
资源指向一个动画。
资源引用:
在Java:R.anim.filename
在XML:@ [包:]动画/文件名
句法:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns: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>
该文件必须有一个根元素:要么是<阿尔法>,<规模>,<翻译>,<旋转>或<set>元素持有其他动画元素的组(或组)(甚至嵌套的<设置>元素)。
ELEMENTS:
<set>
持有其他动画元素的容器(
<alpha>
,
<scale>
,
<translate>
,
<rotate>
)或其他<set>元素。表示一个AnimationSet。
属性:
android:interpolator
插补资源。内插器适用于动画。该值必须是一个指定的内插器(未内插器类名称)的资源的参考。有可从平台默认的内插资源,也可以创建自己的内插器的资源。请参见下面的讨论,更多的内插器。
android:shareInterpolator
布尔。 “真”,如果你想分享所有的子元素中相同的插补器。
<alpha>
淡入或淡出动画。表示一个AlphaAnimation。
属性:
android:fromAlpha
浮动。起始的不透明度偏置,其中0.0是透明,1.0是不透明的。
android:toAlpha
浮动。结束不透明度偏置,其中0.0是透明,1.0是不透明的。
对于由<阿尔法>支持更多的属性,看动画类引用(其中,所有XML属性由该元素inherrited)。
<scale>
一个伸缩动画。可以通过指定pivotX和pivotY指定从它向外(或向内)生长的图像的中心点。例如,如果这些值是0,0(左上角),所有增长将向下和向右。代表ScaleAnimation。
属性:
android:fromXScale
浮动。启动X尺寸偏差,其中1.0是没有任何变化。
android:toXScale
浮动。结束x尺寸偏差,其中1.0是没有任何变化。
android:fromYScale
浮动。起始Y尺寸偏差,其中1.0是没有任何变化。
android:toYScale
浮动。结束Y规格偏移,其中1.0是没有任何变化。
android:pivotX
浮动。的X坐标,以保持固定对象时缩放。
android:pivotY
浮动。的Y坐标,以保持固定对象时缩放。
对于由<
scale>支持更多的属性,看动画类引用(其中,所有XML属性由该元素inherrited)。
<translate>
垂直和/或水平运动。支持在以下任何三种格式的以下属性:值从-100到100以“%”结尾,指示相对于本身的百分比;值从-100到100“%P”结尾,这表明相对于其父的百分比;一个浮点值,没有后缀,表示绝对值。代表TranslateAnimation。
属性:
android:fromXDelta
浮动或百分比。开始的X轴偏移。表示任一:在相对于正常位置的像素(例如“5”),在相对于该元件宽度百分比(例如,“5%”),或在相对百分比到母体宽度(例如「5%对“ )。
android:toXDelta
浮动或百分比。结束X轴偏移。表示任一:在相对于正常位置的像素(例如“5”),在相对于该元件宽度百分比(例如,“5%”),或在相对百分比到母体宽度(例如「5%对“ )。
android:fromYDelta
浮动或百分比。开始的Y轴偏移。表示任一:在相对于正常位置的像素(例如“5”),在相对于所述元件的高度的百分比(例如,“5%”),或在相对百分比到母体高度(例如“5%对” )。
android:toYDelta
浮动或百分比。结束Y轴偏移。表示任一:在相对于正常位置的像素(例如“5”),在相对于所述元件的高度的百分比(例如,“5%”),或在相对百分比到母体高度(例如“5%对” )。
对于由
<translate>支持更多的属性,看动画类引用(其中,所有XML属性由该元素inherrited)。
<rotate>
一个旋转动画。代表RotateAnimation。
属性:
android:fromDegrees
浮动。开始角度位置,以度。
android:toDegrees
浮动。结束角度位置,以度。
android:pivotX
浮动或百分比。旋转中心的X坐标。表示任一:在相对于对象的左边缘像素(例如“5”),在相对于对象的左边缘百分比(例如,“5%”),或在相对百分比到父容器的左边缘(如“ 5%对“)。
android:pivotY
浮动或百分比。旋转中心的Y坐标。表示任一:在相对于对象的顶部边缘像素(例如“5”),在相对于物体的顶部边缘百分比(例如,“5%”),或在相对百分比到父容器的顶部边缘(如“ 5%对“)。
对于由<旋转>支持更多的属性,看动画类引用(其中,所有XML属性由该元素inherrited)。
例:
在保存RES /动画/ hyperspace_jump.xml XML文件:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="1.0"
android:toXScale="1.4"
android:fromYScale="1.0"
android:toYScale="0.6"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="700" />
<set
android:interpolator="@android:anim/accelerate_interpolator"
android:startOffset="700">
<scale
android:fromXScale="1.4"
android:toXScale="0.0"
android:fromYScale="0.6"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="400" />
<rotate
android:fromDegrees="0"
android:toDegrees="-45"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="400" />
</set>
</set>
此应用程序代码将动画应用到的ImageView和启动动画:
ImageView image = (ImageView) findViewById(R.id.image);
Animation hyperspaceJump = AnimationUtils.loadAnimation
(this, R.anim.hyperspace_jump);
image.startAnimation
(hyperspaceJump);
也可以看看:
2D图形:吐温动画
插值
内插器是在XML中,影响变化的动画中的速率限定的动画改性剂。这使得现有的动画效果加速,减速,反复,反弹等。
内插器被应用到了Android的动画元素:插值属性,它的值是内插器资源的引用。
在Android的所有可用插值是插值类的子类。对于每个插值类,Android包含您可以使用次序在android内插器应用到动画引用公共资源:插补属性。下表指定要用于每个插补器资源:
内插器类资源ID
AccelerateDecelerateInterpolator @android:动画/ accelerate_decelerate_interpolator
AccelerateInterpolator @android:动画/ accelerate_interpolator
AnticipateInterpolator @android:动画/ anticipate_interpolator
AnticipateOvershootInterpolator @android:动画/ anticipate_overshoot_interpolator
BounceInterpolator @android:动画/ bounce_interpolator
CycleInterpolator @android:动画/ cycle_interpolator
DecelerateInterpolator @android:动画/ decelerate_interpolator
LinearInterpolator @android:动画/ linear_interpolator
OvershootInterpolator @android:动画/ overshoot_interpolator
这里是你如何运用这些与Android之一:内插器属性:
<set android:interpolator="@android:anim/accelerate_interpolator">
...
</set>
自定义插值
如果你不满意的平台(上表中列出)提供的内插器,您可以创建修改的属性自定义资源的内插器。例如,可以调整加速度为预见插补的速度,或调整的周期数为周期插补。为了做到这一点,你需要在一个XML文件来创建自己的内插器的资源。
文件位置:
RES /动画/ filename.xml中
文件名将用作资源ID。
编译的资源数据类型:
资源指针到相应的内插的对象。
资源引用:
在XML:@ [包:]动画/文件名
句法:
<?xml version="1.0" encoding="utf-8"?>
<InterpolatorName xmlns:android="http://schemas.android.com/apk/res/android"
android:attribute_name="value"
/>
如果不应用任何属性,那么你就会插功能完全一样的平台(表上面列出)提供的。
ELEMENTS:
请注意,每个插补实现,XML定义的时候,小写开头的名字。
<accelerateDecelerateInterpolator>
变化率开始,并结束缓慢但通过中间加速。
无属性。
<accelerateInterpolator>
变化率开始慢慢出来,再加速。
属性:
android:factor
浮动。加速度(默认为1)。
<anticipateInterpolator>
这种变化开始向后甩,然后向前。
属性:
android:tension
浮动。张力的量应用(默认为2)。
<anticipateOvershootInterpolator>
改变落后开始,甩向前和过冲的目标值,然后稳定在最终值。
属性:
android:tension
浮动。张力的量应用(默认为2)。
android:extraTension
浮动。由量乘以张力(默认为1.5)。
<bounceInterpolator>
变化反弹在末端。
无属性
<cycleInterpolator>
将重复周期的指定数目的动画。变化率遵循正弦模式。
属性:
android:cycles
整数。周期(默认为1)的数目。
<decelerateInterpolator>
变化率迅速开出,然后减速。
属性:
android:factor
浮动。减速度(默认为1)。
<linearInterpolator>
变化率是恒定的。
无属性。
<overshootInterpolator>
这种变化甩向前冲过最后一个值,然后回来。
属性:
android:tension
浮动。张力的量应用(默认为2)。
例:
在保存RES /动画/ my_overshoot_interpolator.xml XML文件:
<?xml version="1.0" encoding="utf-8"?>
<overshootInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
android:tension="7.0"
/>
这个动画XML将运用插值:
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@anim/my_overshoot_interpolator"
android:fromXScale="1.0"
android:toXScale="3.0"
android:fromYScale="1.0"
android:toYScale="3.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="700" />
帧动画
在XML中定义的动画,显示图像在顺序的序列(如薄膜)。
文件位置:
RES /绘制/ filename.xml中
文件名将用作资源ID。
编译的资源数据类型:
资源指向一个AnimationDrawable。
资源引用:
在Java:R.drawable.filename
在XML:@ [包:] drawable.filename
句法:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns: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>
ELEMENTS:
<animation-list>
需要。这必须是根元素。包含一个或多个<item>元素。
属性:
android:oneshot
布尔。 “真”,如果你想执行一次动画; “假”循环动画。
<item>
动画的单帧。必须是一个<动画列表>元素的子元素。
属性:
android:drawable
绘制资源。可绘制用于此框架。
android:duration
整数。持续时间显示此框架,以毫秒为单位。
例:
在保存RES /动画/ rocket.xml 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/rocket_thrust1" android:duration="200" />
<item android:drawable="@drawable/rocket_thrust2" android:duration="200" />
<item android:drawable="@drawable/rocket_thrust3" android:duration="200" />
</animation-list>
此应用程序代码将设置动画为背景的视图,然后播放动画:
ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
rocketImage.setBackgroundResource
(R.drawable.rocket_thrust);
rocketAnimation = (AnimationDrawable) rocketImage.getBackground()
;
rocketAnimation.start()
;