最近在应用中用到了 Animation 。在网上浏览了下,感觉有些东西讲得很精辟。因此,我想总结下。
Drawable 最强大的功能是:显示Animation。Android SDK介绍了2种Animation:
在使用Animation前,我们先学习如何定义Animation,这对我们使用Animation会有很大的帮助。Animation是以XML格式定义的,定义好的XML文件存放在res\anim中。由于Tween Animation与Frame Animation的定义、使用都有很大的差异,我们将分开介绍,本篇幅中介绍Tween Animation的定义与使用,后续篇幅再详细介绍Frame Animation。按照XML文档的结构【父节点,子节点,属性】来介绍Tween Animation,其由4种类型:
在介绍以上4种类型前,先介绍Tween Animation共同的节点属性。
表一 |
||
属性[类型] |
功能 |
|
Duration[long] |
属性为动画持续时间 |
时间以毫秒为单位 |
fillAfter [boolean] |
当设置为true ,该动画转化在动画结束后被应用 |
|
fillBefore[boolean] |
当设置为true ,该动画转化在动画开始前被应用 |
|
interpolator |
指定一个动画的插入器 |
有一些常见的插入器 |
repeatCount[int] |
动画的重复次数 |
|
repeatMode[String] |
定义重复的行为 |
1:"restart" 2:"reverse" eg: android:repeatMode="reverse" |
startOffset[long] |
动画之间的时间间隔,从上次动画停多少时间开始执行下个动画 |
|
zAdjustment[int] |
定义动画的Z Order的改变 |
0:保持Z Order不变 |
看了以上节点,大家是不是都想开始定义动画了。下面我们就开始结合具体的例子,介绍4种类型各自特有的节点元素。
表二 |
||
XML节点 |
功能说明 |
|
alpha |
渐变透明度动画效果 |
|
<alpha |
||
fromAlpha |
属性为动画起始时透明度 |
0.0表示完全透明 |
toAlpha |
属性为动画结束时透明度 |
表三 |
|||
scale |
渐变尺寸伸缩动画效果 |
||
<scale |
|||
fromXScale[float] fromYScale[float] |
为动画起始时,X、Y坐标上的伸缩尺寸 |
0.0表示收缩到没有 |
|
toXScale [float] |
为动画结束时,X、Y坐标上的伸缩尺寸 |
||
pivotX[float] |
为动画相对于物件的X、Y坐标的开始位置 |
属性值说明:从0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置 |
|
|
|
|
|
表四 |
|||
translate |
画面转换位置移动动画效果 |
||
<translate |
|||
fromXDelta |
为动画、结束起始时 X坐标上的位置 |
|
|
fromYDelta |
为动画、结束起始时 Y坐标上的位置 |
|
|
|
|
|
|
表五 |
|||
rotate |
画面转移旋转动画效果 |
||
<rotate |
|||
fromDegrees |
为动画起始时物件的角度 |
说明 |
|
toDegrees |
属性为动画结束时物件旋转的角度 可以大于360度 |
||
pivotX |
为动画相对于物件的X、Y坐标的开始位 |
说明:以上两个属性值 从0%-100%中取值 |
|
|
|
|
|
按照上面的讲述学习完了Tween Animation的定义,对Tween Animation有了详细的了解,再去了解下Android SDK的animation package(android.view.animation),其提供了操作Tween Animation所有的类。
Android SDK提供了基类:Animation,包含大量的set/getXXXX()函数来设置、读取Animation的属性,也就是前面表一中显示的各种属性。Tween Animation由4种类型:alpha、scale、translate、roate,在Android SDK中提供了相应的类,Animation类派生出了AlphaAnimation、ScaleAnimation、TranslateAnimation、RotateAnimation分别实现了平移、旋转、改变 Alpha 值等动画,每个子类都在父类的基础上增加了各自独有的属性。再去看下这几个类的构造函数,是不是与我们在表二、表三、表四、表五种定义的属性完全一样。
在了解了Tween Animation的定义,对android.view.animation有了一些基本的认识后,开始介绍Tween Animation如何使用。Android SDK提供了2种方法:1、直接从XML资源中读取Animation;2、使用Animation子类的构造函数来初始化Animation对象。第二种方法在看了Android SDK中各个类的说明就知道如何使用了,下面简要说明从XML资源中读取Animation,按照应用程序开发的过程,介绍整个使用的过程,如下:
1. 创建Android工程;
2. 导入一张图片资源;
3. 在res\layout\main.xml中添加一个 ImageView Widget;
4. 在res下创建新的文件夹且命名为:anim,并在此文件夹下面定义 Animation XML 文件;
5. 修改OnCreate()中的代码,显示动画资源;
关键代码,解析如下:
//main.xml中的ImageView
ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
//加载动画
Animation hyperspaceJumpAnimation =
AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
//使用ImageView显示动画
spaceshipImage.startAnimation(hyperspaceJumpAnimation);
这里简要解析如下: