在講解屬性動(dòng)畫之前先補(bǔ)充一下Android 3.0之前存在的動(dòng)畫種類:frame-by-frame animation(幀動(dòng)畫) 和 tweened animation(補(bǔ)間動(dòng)畫)兩種。
為什么Android 3.0開始要引入Property Animator 屬性動(dòng)畫呢?
首先,我們會(huì)好奇Property Animator 有什么特殊的地方?在什么情況下適合采用Property Animator的方式自定義動(dòng)畫效果?
接下來讓我們分析一下前兩種動(dòng)畫的優(yōu)勢(shì)與劣勢(shì)。
何為幀動(dòng)畫呢,依據(jù)字面意思大家可以猜測(cè)到幀動(dòng)畫應(yīng)該會(huì)有一幀一幀的效果,的確如此。不過,它適合用在什么的場(chǎng)景呢?
幀動(dòng)畫類似于電影方式一張圖片一張圖片的切換(見過膠片電影播放的童鞋應(yīng)該更加清楚),其原理是在“連續(xù)的關(guān)鍵幀”中分解動(dòng)畫動(dòng)作,也就是在時(shí)間軸的每幀上逐幀繪制不同的內(nèi)容,使其連續(xù)播放而成動(dòng)畫。 因?yàn)橹饚瑒?dòng)畫的幀序列內(nèi)容不一樣,不但給制作增加了負(fù)擔(dān)而且最終輸出的文件量也很大,但它的優(yōu)勢(shì)也很明顯:逐幀動(dòng)畫具有非常大的靈活性,幾乎可以表現(xiàn)任何想表現(xiàn)的內(nèi)容,而它類似與電影的播放模式,很適合于表演細(xì)膩的動(dòng)畫。
那么補(bǔ)間動(dòng)畫又有哪些十八般武藝呢?
補(bǔ)間動(dòng)畫主要有 淡入淡出、縮放、平移、旋轉(zhuǎn)等4種基本的操作,利用AnimationSet可以將幾種操作組合起來,表現(xiàn)出不同的效果。此外我們還可以通過Interpolator來控制動(dòng)畫的速度,以達(dá)到不同的視覺上的效果。
你可能會(huì)說其實(shí)補(bǔ)間動(dòng)畫的功能也挺強(qiáng)大的嘛,其實(shí)就是很強(qiáng)大(與幀動(dòng)畫相比);
那么我們來探討一下補(bǔ)間動(dòng)畫的軟肋,比如它只能用在View對(duì)象上(局限1)、再比如說它只能改變View對(duì)象的繪制效果,而不能修改View對(duì)象的屬性(局限2)、此外它的實(shí)現(xiàn)機(jī)制是看硬編碼實(shí)現(xiàn)的,功能就是這樣(可以調(diào)侃的說一句,從我這里走就這么一條路,你愛過不過,不過拉倒!哈哈~),基本沒有什么擴(kuò)展性(局限3)。
同樣,幀動(dòng)畫也只能如此優(yōu)秀的逐幀的播放照片。
接下來我們可以看看屬性動(dòng)畫有什么獨(dú)特之處。
屬性動(dòng)畫實(shí)際上是一種不斷地對(duì)值進(jìn)行操作的機(jī)制,并將值賦值到指定對(duì)象的指定屬性上,可以是任意對(duì)象的任意屬性(你沒有看錯(cuò),的確是任意對(duì)象、任意屬性)。
說了這么多,那么我們接下來深入了解一下這個(gè)讓你越來越愛的屬性動(dòng)畫。
各位請(qǐng)移步Android屬性動(dòng)畫詳解(二)