首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android画图学习小结-Animation(上)

2012-08-14 
Android画图学习总结-Animation(上)随着对Drewable的深入了解,发现了Drawable更加强大的功能:显示Animatio

Android画图学习总结-Animation(上)

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

  • Tween Animation:通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果
  • Frame Animation:顺序播放事先做好的图像,跟电影类似

    在使用Animation前,我们先学习如何定义Animation,这对我们使用Animation会有很大的帮助。Animation是以XML格式定义的,定义好的XML文件存放在res\anim中。由于Tween Animation与Frame 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:重新开始? 2:plays backwardstartOffset[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]为动画起始时,X、Y坐标上的伸缩尺寸0.0表示收缩到没有
      1.0表示正常无伸缩
      值小于1.0表示收缩
      值大于1.0表示放大toXScale [float]
      toYScale[float]为动画结束时,X、Y坐标上的伸缩尺寸pivotX[float]
      pivotY[float]为动画相对于物件的X、Y坐标的开始位置属性值说明:从0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置????

      表四

      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为动画相对于物件的X、Y坐标的开始位说明:以上两个属性值 从0%-100%中取值
      50%为物件的X或Y方向坐标上的中点位置????

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

      Android画图学习小结-Animation(上)Android画图学习小结-Animation(上)Android画图学习小结-Animation(上)Android画图学习小结-Animation(上)???

      按照上面的讲述学习完了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 值等动画,每个子类都在父类的基础上增加了各自独有的属性。再去看下这几个类的构造函数,是不是与我们在表二、表三、表四、表五种定义的属性完全一样。
      Android画图学习小结-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中仔细阅读。

热点排行