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
posted @ 2012-01-31 18:00  Lefter  阅读(4381)  评论(0编辑  收藏  举报