Android應用資源—動畫資源(Animation Resources)(二)

上一篇:/kf/201204/127802.html

視圖動畫框架支持補間動畫和幀動畫,它們都能夠在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>

    設定尺寸的動畫。可以指定圖片從它的中心點向外擴展或向內收縮,這個圖片的初始大小可以通過pivotX和pivotY屬性來指定。例如,如果這些值都設定為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>

    垂直或/和水平移動。以下屬性都支持下列三種格式中任意一種格式的屬性值:用“%”結尾的-100到100之間的數,指定相對與自身的百分比;用“%p”結尾的-100到100之間的數,指定相對於父窗口的百分比;不帶有後綴的浮點數,指定移動的絕對值,它代表瞭一個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);

 

摘自 FireOfStar的專欄

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。