Android中Animation简析,附Demo
本文参考:
http://developer.android.com/guide/topics/resources/animation-resource.html
http://developer.android.com/guide/topics/graphics/animation.html
在Android中,Animation分为Tween Animation和Frame Animation两类。
一、Tween Animation
对一张图片进行一系列的变换(包括缩放、透明度、移动、旋转)。对应的类是Animation;
资源访问方式:
In Java: R.anim.filename
In XML: @[package:]anim/filename
文件位置:
res/anim/filename.xml
语法:
<?xml version="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>
set节点:对应AnimationSet类
android:interpolator:是否为这个Animation定义一个Interpolator(负责定义Animation的变化速率)。
android:shareInterpolator:是否让子节点这个Interpolator。
alpha节点:对应AlphaAnimation类
用于设置Animation的透明度。
android:fromAlpha:起始时的透明度。0.0:透明;1.0:不透明。
android:toAlpha:结束时的透明度。0.0:透明;1.0:不透明。
scale节点:对应ScaleAnimation类
用于设置Animation缩放。
android:fromXScale:起始时X方向的缩放程度,使用百分比。
android:toXScale:结束时X方向的缩放程度,使用百分比。
android:fromYScale:起始时Y方向的缩放程度,使用百分比。
android:toYScale:结束时Y方向的缩放程度,使用百分比。
android:pivotX:缩放时的基准点在X方向的位置,可以使用浮点数或百分比
android:pivotY:缩放时的基准点在Y方向的位置,可以使用浮点数或百分比
translate节点:对应TranslateAnimation类
用于设置Animation的移动。
android:fromXDelta:起始位置的X方向的坐标,可以使用浮点数或百分比
android:toXDelta:结束位置的X方向的坐标,可以使用浮点数或百分比
android:fromYDelta:起始位置的Y方向的坐标,可以使用浮点数或百分比
android:toYDelta:结束位置的Y方向的坐标,可以使用浮点数或百分比
rotate节点:对应RotateAnimation类
用于设置Animation的旋转。
android:fromDegrees:开始旋转时的角度,使用浮点数
android:toDegrees:结束旋转的角度,使用浮点数
android:pivotX:旋转基准点的X方向的坐标,使用浮点数或百分比
android:pivotY:旋转基准点的Y方向的坐标,使用浮点数或百分比
如何确定旋转的方向:
我们假设fromDegrees=A;toDegrees=B:
如果A>B,则逆时针旋转;
如果A<B,则顺时针旋转。
注:在translate和rotate中使用百分比时能针对自身和父控件来确定位置:①距离自己左、上边界(右上角为基准点)的百分比,如:"5%";②
距离父控件的左、上边界的百分比,如:"5%p"
.
interpolators:
请参考:http://developer.android.com/guide/topics/resources/animation-resource.html#Interpolators
在定义Tween Animation时还有两个比较重要的属性是:android:duration(动作的持续时间)和android:startOffset(动作的开始时间).
二、Frame Animation
将几张图片按顺序进行显示。对应的类是AnimationDrawable;
资源访问方式:
In Java: R.drawable.filename
In XML: @[package:]drawable.filename
文件位置:
res/drawable/filename.xml
语法:
<?xml version="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>
animation-list节点:
必需的,且必须是根节点,包含一个或多个item节点.
android:oneshot:是否要循环显示该动画.
item节点:
Frame Animation的一个frame.必须包含在animation-list节点.
android:drawable:要显示的图片
android:duration:显示时间,计算单位是毫秒.
Demo(基于Android2.2;UTF-8编码):
http://dl.dbank.com/c0r6pvdtfr