Animation学习总结(上)(转)

来源:互联网 发布:巨人网络史玉柱的故事 编辑:程序博客网 时间:2024/05/19 19:58

转贴:http://www.moandroid.com/?p=790

 


 

随着对Drewable的深入了解,发现了Drawable更加强大的功能:显示AnimationAndroid SDK介绍了2Animation

·        Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果

·        Frame Animation:顺序播放事先做好的图像,跟电影类似

在使用Animation前,我们先学习如何定义Animation,这对我们使用Animation会有很大的帮助。Animation是以XML格式定义的,定义好的XML文件存放在res/anim中。由于Tween AnimationFrame Animation的定义、使用都有很大的差异,我们将分开介绍,本篇幅中介绍Tween Animation的定义与使用,后续篇幅再详细介绍Frame Animation。按照XML文档的结构【父节点,子节点,属性】来介绍Tween Animation,其由4种类型:

·        Alpha:渐变透明度动画效果

·        Scale:渐变尺寸伸缩动画效果

·        Translate:画面转换位置移动动画效果

·        Rotate:画面转换位置移动动画效果

在介绍以上4种类型前,先介绍Tween Animation共同的节点属性,关于节点的命名原则,请阅读AndroidManifest.xml文件结构说明

表一

属性[类型]

功能

 

Duration[long]

属性为动画持续时间

时间以毫秒为单位

fillAfter [boolean]

当设置为true ,该动画转化在动画结束后被应用

fillBefore[boolean]

当设置为true ,该动画转化在动画开始前被应用

interpolator

指定一个动画的插入器

有一些常见的插入器
accelerate_decelerate_interpolator
加速-减速 动画插入器
accelerate_interpolator
加速-动画插入器
decelerate_interpolator
减速- 动画插入器
其他的属于特定的动画效果

repeatCount[int]

动画的重复次数

 

RepeatMode[int]

定义重复的行为

1:重新开始  2plays backward

startOffset[long]

动画之间的时间间隔,从上次动画停多少时间开始执行下个动画

zAdjustment[int]

定义动画的Z Order的改变

0:保持Z Order不变
1
:保持在最上层
-1
:保持在最下层

看了以上节点,大家是不是都想开始定义动画了。下面我们就开始结合具体的例子,介绍4种类型各自特有的节点元素。

表二

XML节点

功能说明

alpha

渐变透明度动画效果

<alpha
android:fromAlpha=”0.1″
android:toAlpha=”1.0″
android:duration=”3000″ />

fromAlpha

属性为动画起始时透明度

0.0表示完全透明
1.0
表示完全不透明
以上值取0.0-1.0之间的float数据类型的数字

toAlpha

属性为动画结束时透明度

 

表三

scale

渐变尺寸伸缩动画效果

<scale
android:interpolator= “@android:anim/accelerate_decelerate_interpolator”
android:fromXScale=”0.0″
android:toXScale=”1.4″
android:fromYScale=”0.0″
android:toYScale=”1.4″
android:pivotX=”50%”
android:pivotY=”50%”
android:fillAfter=”false”
android:startOffset=“700”
android:duration=”700″
android:repeatCount=”10″ />

fromXScale[float] fromYScale[float]

为动画起始时,XY坐标上的伸缩尺寸

0.0表示收缩到没有
1.0
表示正常无伸缩
值小于1.0表示收缩
值大于1.0表示放大

toXScale [float]
toYScale[float]

为动画结束时,XY坐标上的伸缩尺寸

pivotX[float]
pivotY[float]

为动画相对于物件的XY坐标的开始位置

属性值说明:从0%-100%中取值,50%为物件的XY方向坐标上的中点位置

    

 

表四

translate

画面转换位置移动动画效果

<translate
android:fromXDelta=”30″
android:toXDelta=”-80″
android:fromYDelta=”30″
android:toYDelta=”300″
android:duration=”2000″ />

fromXDelta
toXDelta

为动画、结束起始时 X坐标上的位置

 

fromYDelta
toYDelta

为动画、结束起始时 Y坐标上的位置

     

 

表五

rotate

画面转移旋转动画效果

<rotate
android:interpolator=”@android:anim/accelerate_decelerate_interpolator”
android:fromDegrees=”0″
android:toDegrees=”+350″
android:pivotX=”50%”
android:pivotY=”50%”
android:duration=”3000″ />

fromDegrees

为动画起始时物件的角度

说明
当角度为负数——表示逆时针旋转
当角度为正数——表示顺时针旋转
(
负数from——to正数:顺时针旋转)
(
负数from——to负数:逆时针旋转)
(
正数from——to正数:顺时针旋转)
(
正数from——to负数:逆时针旋转)

toDegrees

属性为动画结束时物件旋转的角度 可以大于360

pivotX
pivotY

为动画相对于物件的XY坐标的开始位

说明:以上两个属性值 从0%-100%中取值
50%
为物件的XY方向坐标上的中点位置

    

看了上面的例子,想必大家也想看下,这些定义的动画,运行起来是什么样效果,下面运行Scale例子中的动画,界面变化如下:

说明: Animation-1

说明: Aniamtion-2

说明: Aniamtion-3

说明: Animation-4

   

按照上面的讲述学习完了Tween Animation的定义,对Tween Animation有了详细的了解,再去了解下Android SDKanimation packageandroid.view.animation),其提供了操作Tween Animation所有的类。

Android SDK提供了基类:Animation,包含大量的set/getXXXX()函数来设置、读取Animation的属性,也就是前面表一中显示的各种属性。Tween Animation4种类型:alphascaletranslateroate,在Android SDK中提供了相应的类,Animation类派生出了AlphaAnimationScaleAnimationTranslateAnimationRotateAnimation分别实现了平移、旋转、改变 Alpha 值等动画,每个子类都在父类的基础上增加了各自独有的属性。再去看下这几个类的构造函数,是不是与我们在表二、表三、表四、表五种定义的属性完全一样。
说明: Animation

在了解了Tween Animation的定义,对android.view.animation有了一些基本的认识后,开始介绍Tween Animation如何使用。Android SDK提供了2种方法:直接从XML资源中读取Animation,使用Animation子类的构造函数来初始化Animation对象,第二种方法在看了Android SDK中各个类的说明就知道如何使用了,下面简要说明从XML资源中读取Animation,按照应用程序开发的过程,介绍整个使用的过程,如下:

1.   创建Android工程;

2.   导入一张图片资源;

3.   res/layout/main.xml中的TextView取代为ImageView

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);
工程的源代码提供给大家下载,下载地址,这里简要解析如下:

·        AnimationUtils提供了加载动画的函数,除了函数loadAnimation(),其他的到Android SDK中去详细了解吧;

·        所谓的动画,也就是对 view 的内容做一次图形变换;

总结说明

看了这个长篇幅的介绍,详细大家对Tween Animation的定义、使用都有了比较深入的了解,由于篇幅有限,这里将Android SDK中的内容省略了不少,比如说:Interpolator,需要大家自己去Android SDK中仔细阅读。

 

 

原创粉丝点击