原文翻译 Android_Develop_API Guides_Animation Resources(动画资源)

英文原文:http://developer.android.com/guide/topics/resources/animation-resource.html#Property

一个动画资源可以使用如下两种动画类型的一种来定义:
Property Animation
    通过 Animator 获得到的一系列的时间集来改变一个对象的属性值创建的动画。
View Animation
    通过视图动画框架,这里有两种类型的动画你可以定义。
    ·Tween animation(补间动画) : 通过Animation在一张图片上执行一系列的变化来创建动画。
    ·Frame animation (帧动画):通过AnimationDrawable 展示一系列有顺序的图片来创建动画。

补间动画(Property Animation)
通过修改目标对象的属性值,使用XML定义的动画,例如一个背景色或者透明度的值,通过一系列的时间。

文件位置:
    res/animator/filename.xml
    这个文件名将被作为资源ID使用。
编译后的资源数据类型:
    资源类型指向 ValueAnimator, ObjectAnimator, 或者 AnimatorSet 的其中之一。
资源引用:
    Java中:R.animator.filename
    XML中:@[package:]animator/filename
语法:

<set
  android:ordering=["together" | "sequentially"]>

    <objectAnimator
        android:propertyName="string"
        android:duration="int"
        android:valueFrom="float | int | color"
        android:valueTo="float | int | color"
        android:startOffset="int"
        android:repeatCount="int"
        android:repeatMode=["repeat" | "reverse"]
        android:valueType=["intType" | "floatType"]/>

    <animator
        android:duration="int"
        android:valueFrom="float | int | color"
        android:valueTo="float | int | color"
        android:startOffset="int"
        android:repeatCount="int"
        android:repeatMode=["repeat" | "reverse"]
        android:valueType=["intType" | "floatType"]/>

    <set>
        ...
    </set>
</set>

文件必须有一个单独的根元素,<set>,
<objectAnimator>, 或 <valueAnimator>
其中之一。你可以将动画元素组织在一起并放置于<set>元素中,这还包括其他的<set>元素(也就是
说,<set>可以包含<set>元素)。

元素:
    <set>

一个包含其他动画元素(<objectAnimator>,<valueAnimator>或其他的<set>元
素)的容器,代表一个 AnimatorSet。      
 你可以进一步的组织动画通过指定的嵌套<set>。每一个<set>元素可以定义它自己的 ordering 属性。
        
        属性:

android:ordering
            关键字,指定位于该set下的动画的播放顺序。
            值            描述
            sequentially        顺序的播放该set下定义的动画
            together(默认)    同时播放该set下定义的动画
    <objectAnimator>
        在一个指定的时间内动态变化对象指定的属性,代表一个 ObjectAnimator 。
        属性:

android:propertyName
  
       
 字符,必须的。代表要被动画化的对象属性,指向对象属性的名字。例如,你可以为一个视图对象指定为"alpha"
或"backgroundColor"。<objectAnimator>元素没有暴露给我们一个 target
属性,因此,你不能在XML描述中设置要执行动画的对象。你必须通过调用 loadAnimator() 来加载你的动画XML资源,然后调用
setTarget() 来设置包含这个属性的目标对象。

android:valueTo
            浮点型,数值型或颜色值,必须的。代表动画结束时的属性值。颜色则用一个六位数的16进制数字来表示。(例如,#333333)

android:valueFrom
            浮点型,数值型或颜色值。代表动画开始时的属性值。如果没有指定,则动画的其实值通过调用对象属性的get方法来获取。颜色则用一个六位数的16进制数字来表示。(例如,#333333)

android:duration
            数值型。动画的时间,用毫秒表示。默认为300毫秒。

android:startOffset
            数值型。调用start() 后延迟执行动画的毫秒数。

android:repeatConunt
            数值型。重复执行动画的次数。设置一个正数,或者设置为"-1"来无限循环重复下去。例如,"1"值意味着在最初始的动画运行结束后再重复一次,所以该动画总共执行了两次。默认值为"0",意味着将不会重复执行(只执行一次)。

android:repeatMode
  
         数值型。代表在动画结束时,该动画的行为。android:repeatCount
必须被设置为一个整数值或"-1"来使得该属性起到它应有的作用。设置为"reverse"使得每次迭代都让动画反转方向,或者设置为"repeat‘来
使得动画的每次循环都从开头开始。

android:valueType
            关键字。如果属性值是一个颜色那么不要指定这个属性。系统的动画框架会自动处理颜色值。
            值            描述
            intType        指定动画属性的值为整数型
            floatType(默认)    指定动画属性的值为浮点型

<animator>
        在一个指定的时间内动态变化对象指定的属性,代表一个 ValueAnimator 。
        属性:

同<objectAnimator>相同。

示例:
    XML文件被保存在 res/animator/property_animator.xml

  <set android:ordering="sequentially">
            <set>
                <objectAnimator
                android:propertyName="x"
                android:duration="500"
                android:valueTo="400"
                android:valueType="intType"/>
                <objectAnimator
            android:propertyName="y"
                android:duration="500"
                android:valueTo="300"
                android:valueType="intType"/>
           </set>
            <objectAnimator
                android:propertyName="alpha"
                android:duration="500"
                android:valueTo="1f"/>
    </set>

为了运行这个动画,你必须在你的代码中将这个XML资源加载为一个
AnimatorSet 对象,然后在启动这个动画集之前先为所有的动画设置目标对象。通过方便的调用setTarget() 为AnimatorSet
的所有子集设置一个单一的目标对象。下面的代码展示如何做:
    AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext,
    R.anim.property_animator);
    set.setTarget(myObject);
    set.start();

同样可以查看这里了解更多:
    ·Property Animation
    ·API Demos 这里举例说明了如何使用属性动画。

视图动画(View Animation)
视图动画框架提供了补间动画和帧动画两种动画,都可以定义在XML中。下面的章节描述了如何使用它们的方法。

补间动画(Tween animation)
定义于XML中,在图片上执行诸如旋转,渐变,移动和拉伸的转变。

文件位置:
    res/anim/filename.xml
    这个文件名将被作为资源ID使用。
编译后的资源数据类型:
    资源类型指向 Animation.。
资源引用:
    Java中:R.anim.filename
    XML中:@[package:]anim/filename
语法:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns: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>

文件必须有一个单独的根元
素:<alpha>,<scale>,<translate>,<rotate>
或是<set>元素,<set>元素可以包括一组(或多组)其他的动画元素(甚至嵌套<set>元素)。

元素:
    <set>
        可以包含其他动画元素的容器 (<alpha>, <scale>, <translate>, <rotate>) 或其他的 <set> 元素. 代表一个 AnimationSet.
        属性:
        android:interpolator
  
     插值器资源。
应用到这个动画的插值器(Interpolator).。该属性的值必须被指向一个特定的代表插值器的XML资源(而不是一个插值器类的名字).。系统提
供了默认的插值器资源或者你可以创建自己的插值器资源,查看下面关于插值器(Interpolators)的更多描述。

android:shareInterpolator
        布尔值. "true",如果你想在所有的子元素中共享插值器。
    <alpha>
    一个淡入或是淡出的动画。代表一个AlphaAnimation。
        属性:
        android:fromAlpha
            浮点型。起始的透明度偏移量,0.0 代表全透明,1.0 代表完全不透明。
        android:toAlpha
            浮点型。 结束的透明度偏移量,0.0 代表全透明,1.0 代表完全不透明。

获取更多 <alpha> 所支持的属性,看 Animation 类(所有的XML属性都继承自该类)。
    <scale>
    可重新计算大小的动画,你可以通过指定的pivotX和pivotY属性来为图片的放大(或是缩小)指定一个中心点。例如,如果值为0,0(左上角),那所有的变化将向下和向右进行。代表一个ScaleAnimation。
        属性:
        android:fromXScale
            浮点型. 起始X轴偏移量,1.0代表无变化。
        android:toXScale
            浮点型. 结束X轴偏移量,1.0代表无变化。
        android:fromYScale
            浮点型. 起始Y轴偏移量,1.0代表无变化。
        android:toYScale
            浮点型. 结束Y轴偏移量,1.0代表无变化。
        android:pivotX
            浮点型. 当缩放时保持位置不变的X轴位置。
        android:pivotY
            浮点型. 当缩放时保持位置不变的Y轴位置。
        获取更多<scale>所支持的属性,看 Animation 类(所有的XML属性都继承自该类)。
    <translate>
  
 一种垂直或者水平的移动。下面的所有属性都支持以下三种格式的属性:1) 值从-100到100,以 %
结尾,指示相对于控件自身的一个百分比值;2) 值从-100到100,以 %p 结尾,指示相对于其父控件的一个百分比;3)
一个不带后缀的浮点数,指示一个相对值。代表一个 TranslateAnimation类。
        属性:
        android:fromXDelta
            浮点或者百分比。起始X轴的偏移量。代表:相对于正常位置的像素距离(比如"5");相对于控件宽度的百分比值(比如"5%");现对于父控件宽度的百分比值(比如"5%p")。
        android:toXDelta
            浮点或者百分比。结束X轴的偏移量。代表:相对于正常位置的像素距离(比如"5");相对于控件宽度的百分比值(比如"5%");现对于父控件宽度的百分比值(比如"5%p")。
        android:fromYDelta
            浮点或者百分比。起始Y轴的偏移量。代表:相对于正常位置的像素距离(比如"5");相对于控件宽度的百分比值(比如"5%");现对于父控件宽度的百分比值(比如"5%p")。
        android:toYDelta
            浮点或者百分比。结束Y轴的偏移量。代表:相对于正常位置的像素距离(比如"5");相对于控件宽度的百分比值(比如"5%");现对于父控件宽度的百分比值(比如"5%p")。
        获取更多 <translate>所支持的属性,看 Animation 类(所有的XML属性都继承自该类)。
    <rotate>
    一个旋转动画,代表 RotateAnimation类。
    属性:
        android:fromDegrees
            浮点型。起始角度。
        android:toDegrees
            浮点数。结束角度。
        android:pivotX
            浮点或者百分比。旋转中心点的X轴位置。代表:相对于正常位置的像素距离(比如"5");相对于控件宽度的百分比值(比如"5%");现对于父控件宽度的百分比值(比如"5%p")。
        android:pivotY
            浮点或者百分比。旋转中心点的Y轴位置。代表:相对于正常位置的像素距离(比如"5");相对于控件宽度的百分比值(比如"5%");现对于父控件宽度的百分比值(比如"5%p")。
        获取更多 <rotate>所支持的属性,看 Animation 类(所有的XML属性都继承自该类)。
例子:
XML文件被保存在 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:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="700" />
    <set
        android:interpolator="@android:anim/accelerate_interpolator"
        android:startOffset="700">
        <scale
            android:fromXScale="1.4"
            android:toXScale="0.0"
            android:fromYScale="0.6"
            android:toYScale="0.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:duration="400" />
        <rotate
            android:fromDegrees="0"
            android:toDegrees="-45"
            android:toYScale="0.0"
            android:pivotX="50%"
            android:pivotY="50%"
            android:duration="400" />
    </set>
</set>

下面这代代码演示如何将这个动画(上面的XML文件所定义的)应用给 ImageView 并启动它:
ImageView image = (ImageView) findViewById(R.id.image);
Animation hyperspaceJump = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
image.startAnimation(hyperspaceJump);
还可以看这里:
    •    2D Graphics: Tween Animation

插值器
插值器是定义在XML中,影响着一个动画的变化率的一个动画调节器。这允许你现有的动画可以具有加速、减速、重复、回弹等效果。
插值器通过在一个动画元素中定义android:interpolator属性来应用,属性值指向插值器资源。
所有在Android中可用的插值器都是Interpolator的子类。每个插值器类,Android包含了一个你可以引用的公共的资源,以便可以通过android:interpolator属性将其应用给一个动画,下面的表格指定了每个插值器类的资源:
插值器类(Interpolator class)                                 资源ID(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 插值器 详情。
下面展示了如何通过android:interpolator属性使用上面列出的所有插值器中的某一个:

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

自定义插值器(Custom interpolators)

果你不满意上面所列出的由系统给你提供的插值器。你可以通过修改属性来创建一个自定义的插值器资源。例如,你可以调节
AnticipateInterpolator的加速速率,或者调整CycleInterpolator的周期数。为了做到这一点,你必须在XML文件中
创建一个你自己的插值器资源。
文件位置:
res/anim/filename.xml
文件名将被用作资源ID。
编译资源数据类型:
资源指向相应的插值器对象。
资源引用:
在XML中: @[package:]anim/filename
语法:

<?xml version="1.0" encoding="utf-8"?>
<InterpolatorName xmlns:android="http://schemas.android.com/apk/res/android"
    android:attribute_name="value" />

如果你没有应用任何属性,那么你的插值器的功能将于上面所列出的由系统提供的完全一样。
元素:
请注意,每个 Interpolator 的实现类,当在XML中定义时,都以小写开头。

<accelerateDecelerateInterpolator>
    变化:开始和结束时较慢,中间时结束。
    没有属性。
    <accelerateInterpolator>
    变化:开始时较慢,然后渐渐加速。
    属性:
    android:factor
    浮点型。加速速率(默认为1)。

<anticipateInterpolator>
    变化:开始时反向然后甩回去。
    属性:
    android:tension
        浮点型。张力的力度值(默认为2)。

<anticipateOvershootInterpolator>
    变化:开始的时候向后然后向前甩一定值后返回最后的值。
    属性:
    android:tension
        浮点型。张力的力度值(默认为2)。
    android:extraTension
        浮点型。用来与tension相乘的张力值(默认为1.5)。

<bounceInterpolator>
    变化:动画结束的时候回弹。
    没有属性。
    <cycleInterpolator>
    变化:动画重复特定的次数,速率变化沿着正玄曲线。
    属性:
    android:cycles
        整数型。重复的次数(默认为1)。

<decelerateInterpolator>
    变化:开始时加速,然后慢。
    属性:
    android:factor
        浮点型。减速速率(默认为1)。

<linearInterpolator>
    变化:以常量速率变化。
    没有属性。
    <overshootInterpolator>
    变化:向前甩出一定值之后再回到原来位置。
    属性:
    android:tension
        浮点型。张力的力度值(默认为2)。

例子:
XML文件被保存在 res/anim/my_overshoot_interpolator.xml:

<?xml version="1.0" encoding="utf-8"?>
<overshootInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
    android:tension="7.0" />

下面的这个动画XML文件将应用这个插值器:

<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@anim/my_overshoot_interpolator"
    android:fromXScale="1.0"
    android:toXScale="3.0"
    android:fromYScale="1.0"
    android:toYScale="3.0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="700" />

帧动画(Frame animation)
使用XML定义的由一系列图片顺序播放的动画(就像电影一样)。
文件位置:
res/drawable/filename.xml
文件名称将被用作资源ID:
编译资源数据类型:
指向 AnimationDrawable 的资源。
资源引用:
在 Java中:R.drawable.filename
在 XML中:@[package:]drawable.filename
语法:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns: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
        布尔值。.true:如果你想让动画只执行一次。false:如果想让动画循环。

<item>
    动画的一帧。必须是<animation-list>元素的子元素。
    属性:
    android:drawable
    图片资源。被用于这一帧的图片。
    android:duration
    整数型。用来展示这一帧的时间,毫秒。
例子:
XML文件被保存在 res/anim/rocket.xml:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/rocket_thrust1" android:duration="200" />
    <item android:drawable="@drawable/rocket_thrust2" android:duration="200" />
    <item android:drawable="@drawable/rocket_thrust3" android:duration="200" />
</animation-list>

下面的代码演示了将这个动画应用为一个视图控件的背景,然后启动它:

ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
rocketImage.setBackgroundResource(R.drawable.rocket_thrust);
rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
rocketAnimation.start();

更多信息看:
    •    2D Graphics: Frame Animation

时间: 2024-08-01 18:55:43

原文翻译 Android_Develop_API Guides_Animation Resources(动画资源)的相关文章

Android应用资源---动画资源(Animation Resources)

有两种类型的动画资源: 属性动画 在设定的时间内,通过修改与Animator类相关的对象的属性值来创建一个动画. 视图动画 有两种类型的视图动画框架 补间动画(Tween animation):通过执行通过执行一系列的与Animation类相关的单一图片的转换来创建动画. 帧动画(Frame animation):通过显示与AnimationDrawable类的顺序相关的图片序列来创建动画. 属性动画 动画被定义在要修改的目标对象属性的XML中,如设定时间内的背景色或alpha值. 文件位置(F

《Programming WPF》翻译 第6章 2.资源与样式

原文:<Programming WPF>翻译 第6章 2.资源与样式 WPF的样式机制以来于资源体系来定位样式.正如你在第5章看到的,样式在元素的资源片段中定义,而且样式通过其名字被引用,正如示例6-18所示: 示例6-18 <Window x:Class="ResourcePlay.Window1" Text="ResourcePlay"     xmlns="http://schemas.microsoft.com/winfx/ava

[翻译] POP Facebook的动画开源库

Pop is an extensible animation engine for iOS and OS X. In addition to basic static animations, it supports spring and decay dynamic animations, making it useful for building realistic, physics-based interactions. The API allows quick integration wit

Android 动画资源详解

属性动画: 使对象的属性值在一定时间间隔内变化到某一个值. http://developer.android.com/guide/topics/resources/animation-resource.html#Property 资源目录:rec\animator <set xmlns:android="http://schemas.android.com/apk/res/android" android:ordering="sequentially" >

WPF 添加 Resources Dictionary 资源 一般类库项目中无法添加资源文件(ResourceDictionary)

原文:WPF 添加 Resources Dictionary 资源 一般类库项目中无法添加资源文件(ResourceDictionary) 在文件夹或者项目右键-> Add(添加),会弹出可以快捷添加的资源,但是你会发现没有 ResourceDictionary资源可以选择. 解决此问题方法: 第一步:工程->右键->Unload Project 第二步:刚刚Unload的这个工程->右键->Edit XXXX : 第三步:PropertyGroup中添加    <Pr

unity的animation动画资源压缩

最近更新了一批骨骼动画资源,不看不知道,一看吓一跳,之前优化掉的内容还需要重新处理一遍,因此..现在就先把之前的东西拿出来做个记录. 所幸之前对动画有做动态加载,现在只需要重新将多余的信息清除掉即可(FBX使用的导入设置是Legacy|Store in Root(New)的方式,然后动画信息单独copy出来使用的方式),主要针对以下两点: 1)骨骼动画的scale信息基本是无用的 2)各个骨骼点信息的float存储精度基本上不需要很高的精度(部分动画除外,视表现效果而定) 最开始有手动删除测试效

UE4开发神秘海域类游戏原型 初阶(二):动画资源的整合

前一篇已经确定神海类游戏原型的目标,首先要做的就是3C's(Character, Controls, Camera)的开发. UE4的3C's的程序部分开发主要也就是基于他的GamePlay Framework来进行的,只要在C++里开发完成,通过蓝图类继承,把参数暴露给蓝图就可以由策划和美术师来直接使用了.鉴于UE4自带的Learn Project的示例代码里还是有相当多参考示例的,一些基础内容这里就跳过不讲了,具体的功能实现会在面涉及需求时详细说明.官方的介绍在这里. https://doc

(转)Unity3d使用心得(2):Unity3d 动态下载动画资源——AnimationClip 的使用 - 斯玛特琦

引言: 在使用 Unity3d 开发微端.或者网页游戏的时候常常须要将资源打包成 AssetBundle ,然后通过 www 的方式动态的下载资源.今天要分享的是我再动态下载 Animation 骨骼动画的时候走的一些弯路和自己最后的解决方式. 我们的项目中的动画资源有上百套之多,每一套动画大概在300KB 到 900KB 之前,所以有一个非常重要的需求就是动态的下载须要的动画. 错误的方法: 我看到需求后想到的第一种方法是将 FBX 倒入的 Prefab 实例化,将当中的 Animation

20 考研英语题源外刊精讲赏析 1~10 期外刊原文+翻译+点评

打卡日期记录: ===========遗忘曲线记录====查词用浏览器:复习刷遍数,用电子版文件m====== 20 考研英语题源外刊精讲赏析1~10 期外刊原文+翻译+点评 01-<美国执业证照制度在阻碍竞争> 本文选自 The Economist<经济学人> 2018 年 2 月 17 日一篇题为 America should get rid ofoppressive job licensing(职业证照制度在阻碍竞争)的文章. 作者指出,美国的职业证照制度并不能保护消费者利益