美文网首页
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