美文网首页
Android 资源类型之 Animation [翻译]

Android 资源类型之 Animation [翻译]

作者: _春夏秋冬 | 来源:发表于2018-08-23 17:10 被阅读0次

    https://developer.android.com/guide/topics/resources/animation-resource
    View Animation https://developer.android.com/guide/topics/graphics/view-animation#tween-animation

    前言

    View animation
    视图动画框架支持补间动画和逐帧动画,他们都可以用XML声明。

    一、Tween animation 补间动画

    以XML格式定义的动画,用于执行图形上的旋转、淡入淡出、移动和拉伸等过渡。

    1.文件位置

    res/anim/filename.xml中,文件名将用作资源ID。

    2.编译资源数据类型

    资源对应的是Animation类。

    3.资源使用

    在Java中:R.anim.filename
    在XML中:@ [package:] anim / filename

    4.语法

    syntax.PNG

    该文件必须具有单个根元素:<alpha>,<scale>,<translate>,<rotate>或<set>元素,其中包含一组(或多组)其他动画元素(甚至嵌套元件)。

    5.元素

    <set>

    • 解释:
      容纳其他动画元素(<alpha>,<scale>,<translate>,<rotate>)或其他<set>元素的容器。 表示一个AnimationSet

    • 属性:
      1)android:interpolator 插值资源。 用于动画的插值器。 该值必须是对指定内插器(不是内插器类名)的资源的引用。 平台提供默认插值器资源,您也可以创建自己的插补器资源。
      2)android:shareInterpolator 。布尔。 如果要在所有子元素中共享相同的插值器,则为“true”。

    <alpha>

    • 解释:
      淡入淡出动画。表示AlphaAnimation
    • 属性:
      1)android:fromAlpha
      Float。 启动不透明度偏移,其中0.0是透明的,1.0是不透明的。
      2)android:toAlpha
      Float。 结束不透明度偏移,其中0.0是透明的,1.0是不透明的。
      有关<alpha>支持的更多属性,请参阅Animation类引用(其中所有XML属性都由此元素继承)。

    <scale>

    • 解释:
      调整大小的动画。 您可以通过指定pivotX和pivotY指定图像的中心点,使其向外(或向内)增长。 例如,如果这些值为0,0(左上角),则所有增长都将向下和向右。 表示ScaleAnimation
    • 属性:
      1)android:fromXScale
      Float。开始X大小偏移,其中1.0没有变化。
      2)android:toXScale
      Float。结束X大小偏移,其中1.0没有变化。
      3)android:fromYScale
      Float。开始Y尺寸偏移,其中1.0没有变化。
      4)android:toYScale
      Float。结束Y尺寸偏移,其中1.0没有变化。
      5)android:pivotX
      Float。缩放对象时X坐标保持固定。
      6)android:pivotY
      Float。缩放对象时Y坐标保持固定。
      有关<scale>支持的更多属性,请参阅Animation类引用(其中,所有XML属性都由此元素继承)。

    <translate>

    • 解释:
      垂直和/或水平运动。 支持以下三种格式中的以下任何属性:-100到100以“%”结尾的值,表示相对于自身的百分比; 以“%p”结尾的-100到100之间的值,表示相对于其父级的百分比; 没有后缀的浮点值,表示绝对值。 表示TranslateAnimation
    • 属性:
      1)android:fromXDelta
      浮动或百分比。 开始X偏移。 表示:相对于正常位置的像素(例如“5”),相对于元素宽度的百分比(例如“5%”),或相对于父宽度的百分比(例如“5%p”))。
      2)android:toXDelta
      浮动或百分比。 结束X偏移。 表示:相对于正常位置的像素(例如“5”),相对于元素宽度的百分比(例如“5%”),或相对于父宽度的百分比(例如“5%p”))。
      3)android:fromYDelta
      浮动或百分比。 开始Y偏移。 表示:相对于正常位置的像素(例如“5”),相对于元素高度的百分比(例如“5%”),或相对于父高度的百分比(例如“5%p”))。
      4)android:toYDelta
      浮动或百分比。 结束Y偏移。 表示:相对于正常位置的像素(例如“5”),相对于元素高度的百分比(例如“5%”),或相对于父高度的百分比(例如“5%p”))。
      有关<translate>支持的更多属性,请参阅Animation类引用(其中,所有XML属性都由此元素继承)。

    <rotate>

    • 解释:
      旋转动画。 表示RotateAnimation
    • 属性:
      1)android:fromDegrees
      浮动。 起始角度位置,以度为单位。
      2)android:toDegrees
      浮动。 结束角度位置,以度为单位。
      3)android:pivotX
      浮动或百分比。 旋转中心的X坐标。 表示:相对于对象左边缘的像素(例如“5”),相对于对象左边缘的百分比(例如“5%”),或相对于父容器左边缘的百分比(例如“5%p“)。
      4)android:pivotY
      浮动或百分比。 旋转中心的Y坐标。 表示:相对于对象的上边缘的像素(例如“5”),相对于对象的上边缘的百分比(例如“5%”),或相对于父容器的上边缘的百分比(例如“5%p“)。
      有关<rotate>支持的更多属性,请参阅Animation类引用(其中,所有XML属性都由此元素继承)。

    6.例子

    XML file saved at res/anim/hyperspace_jump.xml:

        <set xmlns:android="http://schemas.android.com/apk/res/android"
            android:shareInterpolator="false">
            <scale
                android:interpolator="@android:anim/accelerate_decelerate_interpolator"
                android:duration="700"
                android:fillAfter="false"
                android:fromXScale="1.0"
                android:toXScale="1.4"
                android:fromYScale="1.0"
                android:toYScale="0.6"
                android:pivotX="50%"
                android:pivotY="50%" />
            <set
                android:interpolator="@android:anim/accelerate_interpolator"
                android:startOffset="700">
                <scale
                    android:duration="400"
                    android:fromXScale="1.4"
                    android:fromYScale="0.6"
                    android:pivotX="50%"
                    android:pivotY="50%"
                    android:toXScale="0.0"
                    android:toYScale="0.0" />
                <rotate
                    android:duration="400"
                    android:fromDegrees="0"
                    android:pivotX="50%"
                    android:pivotY="50%"
                    android:toDegrees="-45"
                    android:toYScale="0.0" />
            </set>
        </set>
        此应用程序代码将动画应用于ImageView并启动动画:
        ImageView image = (ImageView) findViewById(R.id.image);
        Animation hyperspaceJump = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
        image.startAnimation(hyperspaceJump);
    

    7.插值器

    插值器是以XML定义的动画修饰符,它影响动画中的变化率。 这允许您现有的动画效果加速,减速,重复,反弹等。

    内插器应用于具有android:interpolator属性的动画元素,其值是对内插器资源的引用。

    Android中可用的所有插值器都是Interpolator类的子类。 对于每个插值器类,Android包含一个公共资源,您可以参考该公共资源,以便使用android:interpolator属性将插值器应用于动画。 下表指定了每个插补器使用的资源:

    Interpolator class                      Resource ID
    AccelerateDecelerateInterpolator        @android:anim/accelerate_decelerate_interpolator
    AccelerateInterpolator                  @android:anim/accelerate_interpolator
    AnticipateInterpolator                  @android:anim/anticipate_interpolator
    AnticipateOvershootInterpolator         @android:anim/anticipate_overshoot_interpolator
    BounceInterpolator                      @android:anim/bounce_interpolator
    CycleInterpolator                       @android:anim/cycle_interpolator
    DecelerateInterpolator                  @android:anim/decelerate_interpolator
    LinearInterpolator                      @android:anim/linear_interpolator
    OvershootInterpolator                   @android:anim/overshoot_interpolator
    

    以下是如何使用android:interpolator属性应用其中一个:

    <set android:interpolator="@android:anim/accelerate_interpolator">
    ...
    </set>
    

    8.自定义插值器

    如果您对平台提供的插补器(在上表中列出)不满意,则可以创建具有已修改属性的自定义插补器资源。 例如,您可以调整AnticipateInterpolator的加速率,或调整CycleInterpolator的周期数。 为此,您需要在XML文件中创建自己的插补器资源。

    相关文章

      网友评论

          本文标题:Android 资源类型之 Animation [翻译]

          本文链接:https://www.haomeiwen.com/subject/otlmiftx.html