Android應(yīng)用資源---動(dòng)畫(huà)資源
有兩種類型的動(dòng)畫(huà)資源:
屬性動(dòng)畫(huà)
在設(shè)定的時(shí)間內(nèi),通過(guò)修改與Animator類相關(guān)的對(duì)象的屬性值來(lái)創(chuàng)建一個(gè)動(dòng)畫(huà)。
視圖動(dòng)畫(huà)
有兩種類型的視圖動(dòng)畫(huà)框架
補(bǔ)間動(dòng)畫(huà)(Tween animation):通過(guò)執(zhí)行通過(guò)執(zhí)行一系列的與Animation類相關(guān)的單一圖片的轉(zhuǎn)換來(lái)創(chuàng)建動(dòng)畫(huà)。
幀動(dòng)畫(huà)(Frame animation):通過(guò)顯示與AnimationDrawable類的順序相關(guān)的圖片序列來(lái)創(chuàng)建動(dòng)畫(huà)。
屬性動(dòng)畫(huà)
動(dòng)畫(huà)被定義在要修改的目標(biāo)對(duì)象屬性的XML中,如設(shè)定時(shí)間內(nèi)的背景色或alpha值。
文件位置(FILE LOCATION):
res/animator/filename.xml,文件名被用作資源ID。
被編譯的資源類型(COMPILED RSOURCE DATATYPE):
資源要指向ValueAnimator、ObjectAnimator或AnimatorSet類型
資源引用(RESOURCE REFERENCE):
在Java代碼中:R.animation.filename
在XML文件中:@[package:]animator/filename
語(yǔ)法(SYNTAX):
android:ordering=["together" | "sequentially"]>
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"]/>
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"]/>
...
這個(gè)文件必須有一個(gè)單一的跟元素:既可以是
元素(ELEMENTS):
能夠包含其他動(dòng)畫(huà)元素的一個(gè)容器(
可以指定
屬性(ATTRIBUTES):
android:ordering
關(guān)鍵屬性,它指定該集合中動(dòng)畫(huà)的播放順序。
值 |
說(shuō)明 |
sequentially |
在本組集合中按順序播放動(dòng)畫(huà)。 |
together(默認(rèn)) |
同一時(shí)間播放本組集合中的動(dòng)畫(huà) |
在特定的設(shè)定時(shí)間內(nèi)一個(gè)對(duì)象的具體動(dòng)畫(huà)屬性,代表了一個(gè)ObjectAnimator對(duì)象。
屬性(ATTRIBUTES):
android:propertyName
字符串類型,必須的。通過(guò)這個(gè)名字來(lái)引用動(dòng)畫(huà)的對(duì)象屬性。例如,可以給View對(duì)象指定“alpha”或“backgroundColor”屬性。ObjectAnimator元素沒(méi)有暴露target屬性,因此不能在XML聲明中把對(duì)象設(shè)置給動(dòng)畫(huà)。必須通過(guò)調(diào)用loadAnimator()方法和setTarget()方法把動(dòng)畫(huà)XML資源填充到包含這個(gè)屬性的目標(biāo)對(duì)象中。
android:valueTo
浮點(diǎn)類型、整型、或顏色值,必須的。它是動(dòng)畫(huà)屬性的結(jié)束值。顏色是用六個(gè)十六進(jìn)制數(shù)表示(如#333333)。
android:valueFrom
浮點(diǎn)類型、整型、或顏色值,它是動(dòng)畫(huà)屬性的開(kāi)始值,如果沒(méi)有指定,那么動(dòng)畫(huà)會(huì)在用屬性的get方法獲取值的時(shí)刻開(kāi)始。顏色是六位十六進(jìn)制數(shù)表示(如#333333)。
android:duration
整數(shù)類型。以毫秒為單位,指定動(dòng)畫(huà)時(shí)間,默認(rèn)是300毫秒。
android:startOffset
整數(shù)類型。在start()方法被調(diào)用之后,動(dòng)畫(huà)延遲的毫秒數(shù)。
android:repeatCount
整數(shù)類型。指定動(dòng)畫(huà)的重復(fù)次數(shù)。設(shè)置為“-1”,說(shuō)明要無(wú)限次重復(fù),或指定一個(gè)正整數(shù)。如,設(shè)定為1,說(shuō)明動(dòng)畫(huà)第一次運(yùn)行之后,還要重復(fù)一次,因此動(dòng)畫(huà)要播放兩次。默認(rèn)值是0,意味著不重復(fù)。
android:repeatMode
正整數(shù)。指定在動(dòng)畫(huà)到達(dá)結(jié)尾時(shí)的行為方式。只有android:repeatCount被設(shè)置為正整數(shù)或“-1”時(shí),這個(gè)屬性才有效果。如果設(shè)置為“reverse”,那么每次重復(fù)時(shí)會(huì)逆向播放動(dòng)畫(huà),如果設(shè)置為“repeat”,那么每次重復(fù)時(shí),會(huì)從動(dòng)畫(huà)的開(kāi)頭來(lái)播放動(dòng)畫(huà)。
android:valueType
關(guān)鍵屬性。如果值是顏色值,那么不用指定這個(gè)屬性。動(dòng)畫(huà)框架會(huì)自動(dòng)處理顏色值。
值 |
說(shuō)明 |
intType |
指定動(dòng)畫(huà)的值是整數(shù) |
floatType(默認(rèn)) |
指定動(dòng)畫(huà)的值是浮點(diǎn)數(shù) |
在設(shè)定時(shí)間內(nèi)的動(dòng)畫(huà)。代表了一個(gè)ValueAnimator對(duì)象。
屬性(ATTRIBUTES):
android:valueTo
浮點(diǎn)型、整型或顏色值,必須的。它是動(dòng)畫(huà)結(jié)束的的值。顏色值用六位十六進(jìn)制數(shù)來(lái)代表(如,#333333)
android:valueFrom
浮點(diǎn)型、整型或顏色值,必須的。它是動(dòng)畫(huà)開(kāi)始的值。顏色值用六位十六進(jìn)制數(shù)來(lái)代表(如,#333333)
android:duration
整數(shù)。以毫秒為單位,指定動(dòng)畫(huà)的播放時(shí)間。默認(rèn)是300毫秒。
android:startOffset
整數(shù)。指定start()方法被調(diào)用后,動(dòng)畫(huà)延遲的毫秒數(shù)。
android:repeatCount
整數(shù)。指定動(dòng)畫(huà)的重復(fù)次數(shù)。如果設(shè)置為“-1”,則動(dòng)畫(huà)會(huì)無(wú)限次重復(fù),或者指定一個(gè)正整數(shù)。例如,設(shè)定為“1”,那么動(dòng)畫(huà)在初始運(yùn)行一次之后,會(huì)再重復(fù)播放一次,因此動(dòng)畫(huà)總共播放了兩次。它的默認(rèn)值是0,這意味著動(dòng)畫(huà)重復(fù)。
android:repeatMode
整數(shù)。它指定動(dòng)畫(huà)到達(dá)結(jié)尾時(shí)重復(fù)的行為方式。android:repeatCount必須被設(shè)置為正整數(shù)或“-1”時(shí),這個(gè)屬性才會(huì)有效果。如果設(shè)置為“reverse”,動(dòng)畫(huà)在每次重播時(shí),會(huì)逆向播放;如果設(shè)置為“repeat”,那么動(dòng)畫(huà)每次重播時(shí),會(huì)重開(kāi)始的位置播放。
android:valueType
關(guān)鍵屬性,如果值是顏色,則不用指定這個(gè)屬性。因?yàn)閯?dòng)畫(huà)框架會(huì)自動(dòng)的處理顏色值
值 |
說(shuō)明 |
intType |
指定動(dòng)畫(huà)的值是整數(shù) |
floatType(默認(rèn)) |
指定動(dòng)畫(huà)的值是浮點(diǎn)數(shù) |
例子(EXAMPLE):
這個(gè)XML文件被保存在res/animator/property_animator.xml:
android:propertyName="x"
android:duration="500"
android:valueTo="400"
android:valueType="intType"/>
android:propertyName="y"
android:duration="500"
android:valueTo="300"
android:valueType="intType"/>
android:propertyName="alpha"
android:duration="500"
android:valueTo="1f"/>
要運(yùn)行這個(gè)動(dòng)畫(huà),就必須在代碼中把這個(gè)XML資源填充給一個(gè)AnimatorSet對(duì)象,然后在啟動(dòng)這個(gè)動(dòng)畫(huà)集之前,把目標(biāo)對(duì)象設(shè)置個(gè)所有的動(dòng)畫(huà)。調(diào)用setTarget方法可以方便的把一個(gè)單一對(duì)象設(shè)置給AnimatorSet對(duì)象的所有子對(duì)象。代碼如下:
AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(myContext, R.anim.property_animator);
set.setTarget(myObject);set.start();