有兩種類型的動畫資源: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):
資源要指向ValueAnimator、ObjectAnimator或AnimatorSet類型
資源引用(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();