Android 资源类型之 Animation [翻译]

2018-08-23  本文已影响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>

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文件中创建自己的插补器资源。

上一篇 下一篇

猜你喜欢

热点阅读