Android應用資源---動畫資源(Animation Resources)

有兩種類型的動畫資源:html

屬性動畫android

在設定的時間內,經過修改與Animator類相關的對象的屬性值來建立一個動畫。框架

視圖動畫ide

有兩種類型的視圖動畫框架動畫

補間動畫(Tween animation):經過執行經過執行一系列的與Animation類相關的單一圖片的轉換來建立動畫。ui

幀動畫(Frame animation):經過顯示與AnimationDrawable類的順序相關的圖片序列來建立動畫。spa

屬性動畫xml

動畫被定義在要修改的目標對象屬性的XML中,如設定時間內的背景色或alpha值。htm

文件位置(FILE LOCATION):對象

res/animator/filename.xml,文件名被用做資源ID

被編譯的資源類型(COMPILED RSOURCE DATATYPE):

資源要指向ValueAnimatorObjectAnimatorAnimatorSet類型

資源引用(RESOURCE REFERENCE):

Java代碼中:R.animation.filename

XML文件中:@[package:]animator/filename

語法(SYNTAX):

<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>元素。

元素(ELEMENTS):

<set>

   可以包含其餘動畫元素的一個容器(<objectAnimator><valueAnimator>、或其餘的<set>元素)。表明一個AnimatorSet對象。

   能夠指定<set>嵌套標籤,把更多的動畫組織到一塊兒。每一個<set>可以定義它本身的順序屬性。

屬性(ATTRIBUTES):

    android:ordering

關鍵屬性,它指定該集合中動畫的播放順序。

說明

sequentially

在本組集合中按順序播放動畫。

together(默認)

同一時間播放本組集合中的動畫

<objectAnimator>

    在特定的設定時間內一個對象的具體動畫屬性,表明了一個ObjectAnimator對象。

屬性(ATTRIBUTES):

    android:propertyName

       字符串類型,必須的。經過這個名字來引用動畫的對象屬性。例如,能夠給View對象指定「alpha」或「backgroundColor」屬性。ObjectAnimator元素沒有暴露target屬性,所以不能在XML聲明中把對象設置給動畫。必須經過調用loadAnimator()方法和setTarget()方法把動畫XML資源填充到包含這個屬性的目標對象中。

    android:valueTo

       浮點類型、整型、或顏色值,必須的。它是動畫屬性的結束值。顏色是用六個十六進制數表示(如#333333)。

    android:valueFrom

       浮點類型、整型、或顏色值,它是動畫屬性的開始值,若是沒有指定,那麼動畫會在用屬性的get方法獲取值的時刻開始。顏色是六位十六進制數表示(如#333333)。

    android:duration

       整數類型。以毫秒爲單位,指定動畫時間,默認是300毫秒。

    android:startOffset

       整數類型。在start()方法被調用以後,動畫延遲的毫秒數。

    android:repeatCount

       整數類型。指定動畫的重複次數。設置爲「-1」,說明要無限次重複,或指定一個正整數。如,設定爲1,說明動畫第一次運行以後,還要重複一次,所以動畫要播放兩次。默認值是0,意味着不重複。

    android:repeatMode

       正整數。指定在動畫到達結尾時的行爲方式。只有android:repeatCount被設置爲正整數或「-1」時,這個屬性纔有效果。若是設置爲「reverse」,那麼每次重複時會逆向播放動畫,若是設置爲「repeat」,那麼每次重複時,會從動畫的開頭來播放動畫。

    android:valueType

       關鍵屬性。若是值是顏色值,那麼不用指定這個屬性。動畫框架會自動處理顏色值。

說明

intType

指定動畫的值是整數

floatType(默認)

指定動畫的值是浮點數

<animator>

在設定時間內的動畫。表明了一個ValueAnimator對象。

屬性(ATTRIBUTES):

    android:valueTo

        浮點型、整型或顏色值,必須的。它是動畫結束的的值。顏色值用六位十六進制數來表明(如,#333333

    android:valueFrom

        浮點型、整型或顏色值,必須的。它是動畫開始的值。顏色值用六位十六進制數來表明(如,#333333

    android:duration

        整數。以毫秒爲單位,指定動畫的播放時間。默認是300毫秒。

    android:startOffset

        整數。指定start()方法被調用後,動畫延遲的毫秒數。

    android:repeatCount

        整數。指定動畫的重複次數。若是設置爲「-1」,則動畫會無限次重複,或者指定一個正整數。例如,設定爲「1」,那麼動畫在初始運行一次以後,會再重複播放一次,所以動畫總共播放了兩次。它的默認值是0,這意味着動畫重複。

     android:repeatMode

        整數。它指定動畫到達結尾時重複的行爲方式。android:repeatCount必須被設置爲正整數或「-1」時,這個屬性纔會有效果。若是設置爲「reverse」,動畫在每次重播時,會逆向播放;若是設置爲「repeat」,那麼動畫每次重播時,會重開始的位置播放。

     android:valueType

        關鍵屬性,若是值是顏色,則不用指定這個屬性。由於動畫框架會自動的處理顏色值

說明

intType

指定動畫的值是整數

floatType(默認)

指定動畫的值是浮點數

例子(EXAMPLE):

這個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();

相關文章
相關標籤/搜索