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

视图动画框架支持补间动画和帧动画,它们都能够在XML中声明。以下介绍如如何使用这两种方法:

补间动画

XML中定义的动画,他执行诸如旋转、渐变、移动和图形的拉伸。

文件位置(FILE LOCATION):

res/anim/filename.xml,文件名被用于资源ID

编译资源类型(COMPILED RESOURCE DATATYPE):

资源指向一个Animation对象

资源引用(RESOURCE REFERENCE):

Java代码中:R.anim.filename

XML中:@[package:]anim/filename

语法(SYNTAX):

<?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>

这个文件必须有一个单独的根元素:既可以是<alpha><scale><translate><rotate>,也可以是持有一组其他动画元素的<set>元素(甚至使用嵌套的<set>元素)。

元素(ELEMENTS):

<set>

    它是一组动画元素的集合,可以包括<alpha><scale><translate><rotate>元素,也可以是另一个<set>元素集合。它代表了一个AnimationSet对象。

    属性(ATTRIBUTES):

    android:interpolator

    插补资源。它指定一个应用与动画的插补器。这个值必须引用特定的插补器资源(不是插补器类名)。可以利用来自平台的默认的插补器资源,也能够创建自己的插补器资源,更多的信息请参照稍后讨论的“插补器”。

    android:shareInterpolator

    布尔值,如果要在所有的子元素中共享插补器,就要设置为”true”

<alpha>

    设定渐进或渐出动画,代表一个AlphaAnimation对象。

    属性(ATTRIBUTES):

    android:fromAlpha

    浮点值。指定动画开始时,对象的透明偏移量。0.0是透明的,1.0是不透明的。

    android:toAlpha

    浮点值。指定动画结束时,对象的透明偏移量。0.0是透明的,1.0是不透明的。

关于<alpha>元素所支持的属性,请参看Animation类。

<scale>

    设定尺寸的动画。可以指定图片从它的中心点向外扩展或向内收缩,这个图片的初始大小可以通过pivotXpivotY属性来指定。例如,如果这些值都设定为0,那么动画对象从左上角开始向右下角生长。它代表了一个ScaleAnimation对象。

    属性(ATTRIBUTES):

    android:fromXScale

    浮点值。动画开始,在X轴的偏移尺寸,1.0代表没有改变。

    android:toXScale

    浮点值。动画结束时,在X轴的偏移尺寸,1.0代表没有改变。

    android:fromYScale

    浮点值。动画开始,在Y轴的偏移尺寸,1.0代表没有改变。

    android:toYScale

    浮点值。动画结束时,在Y轴的偏移尺寸,1.0代表没有改变。

    android:pivotX

    浮点值。指定动画对象被缩放时,要保留的固定X轴的宽度。

    androd:pivotY

    浮点值。指定动画对象被缩放时,要保留的固定Y轴的宽度。

有关<scale>元素所支持的更多的属性,请参照Animation类。

 <translate>

    垂直或/和水平移动。以下属性都支持下列三种格式中任意一种格式的属性值:用“%”结尾的-100100之间的数,指定相对与自身的百分比;用“%p”结尾的-100100之间的数,指定相对于父窗口的百分比;不带有后缀的浮点数,指定移动的绝对值,它代表了一个TranslateAnimation对象。

    属性(ATTRIBUTES

    android:fromXDelta

    浮点值或百分比,它设定了动画开始时X轴的偏移量,既可以是相对与普通位置的像素值(如5),也可以是相对与元素自身宽度的百分比(如5%),还可以是相对于父窗口宽度的百分比(如5%p)。

    android:toXDelta

    浮点值或百分比,它设定了动画结束时X轴的偏移量,既可以是相对与普通位置的像素值(如5),也可以是相对与元素自身宽度的百分比(如5%),还可以是相对于父窗口宽度的百分比(如5%p)。

    android:fromYDelta

    浮点值或百分比,它设定了动画开始时Y轴的偏移量,既可以是相对与普通位置的像素值(如5),也可以是相对与元素自身宽度的百分比(如5%),还可以是相对于父窗口宽度的百分比(如5%p)。

    android:toYDelta

    浮点值或百分比,它设定了动画结束时X轴的偏移量,既可以是相对与普通位置的像素值(如5),也可以是相对与元素自身宽度的百分比(如5%),还可以是相对于父窗口宽度的百分比(如5%p)。

有关<translate>元素支持的更多属性,请参照Animation类。

<roate>

一个旋转动画。代表一个RotateAnimation对象。

    属性(ATTRIBUTES

    android:fromDegrees

    浮点值。指定动画开始时的角度。

    android:toDegrees

    浮点值,指定动画结束时的角度。

    android:pivotX

    浮点值或百分比,它是旋转中心的X轴坐标,既可以是相对于对象左边缘的像素值(如5),也可以是相对与对象左边缘的百分比(如5%),还可以是相对于父容器的左边缘的百分比(如5%p)。

    android:pivotY

    浮点值或百分比,它是旋转中心的Y轴坐标,既可以是相对于对象上边缘的像素值(如5),也可以是相对与对象上边缘的百分比(如5%),还可以是相对于父容器的上边缘的百分比(如5%p)。

有关<rotate>支持的更多属性,请参照Animation类。

例子

XML文件被保存在res/anim/hyperspace_jump.xml中:

<setxmlns: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>

应用程序代码把这个动画应用于一个ImageView对象,并启动这个动画。

ImageView image =(ImageView) findViewById(R.id.image);
Animation hyperspaceJump =AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
image
.startAnimation(hyperspaceJump);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值