• 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
  • 相关阅读:
    Bandicam班迪录屏 高清录制视频软件
    理解WebKit和Chromium: 浏览器综述
    GDAL对于raw数据支持的一个bug
    关于GDAL计算图像坐标的几个问题
    理解WebKit和Chromium: WebKit资源加载机制
    关于web服务器架构的思考
    使用PROJ4库将地心直角坐标(XYZ)转为地心大地坐标(BLH)
    Java数据类型和MySql数据类型对应表
    理解WebKit和Chromium: 基于Chromium内核的Android WebView
    【Unity探究】物理碰撞实验
  • 原文地址:https://www.cnblogs.com/Lefter/p/2333848.html
Copyright © 2020-2023  润新知