配置動畫資源
android支持3種類型的動畫
-
屬性動畫 補(bǔ)間動畫
tweened animation.
通過在目標(biāo)對象的任何屬性的兩個值之間應(yīng)用增量變化鳄梅,可以產(chǎn)生一種動畫效果。包括顏色圈盔、透明度售滤、字體大小罚拟。 - 視圖動畫 補(bǔ)間動畫tweened animation.用來旋轉(zhuǎn)、移動和拉伸一個視圖
- 幀動畫 逐幀的格子動畫完箩,用來顯示一系列的Drawable圖片
屬性動畫: 每一個屬性動畫都存儲在項目的res/animator文件夾下的一個單獨(dú)的XML文件中赐俗。動畫的文件名被用作它的資源標(biāo)識符,使用屬性動畫器為目標(biāo)對象的幾乎任何屬性生成動畫弊知。
視圖動畫: 每一個屬性動畫都存儲在項目的res/animator文件夾下的一個單獨(dú)的XML文件中秃励。動畫的文件名被用作它的資源標(biāo)識符。一個動畫可以定義為按以下方式改變:alpha(淡入/淡出),scale(縮放)吉捶、translate(移動)或者rotate(旋轉(zhuǎn)),可以使用set標(biāo)簽創(chuàng)建一個動畫的組合夺鲜。一個動畫集包含了一個或多個動畫變換皆尔,并且支持使用多個額外標(biāo)簽和屬性來定制動畫集合中德每個動畫何時以及如何播放
可用的set標(biāo)簽:
-
duration
持續(xù)時間 -
startOffset
動畫開始之前的延遲,以毫秒為單位 -
fillBeforeture
在動畫開始之前應(yīng)用動畫變形 -
fillAftertrue
在動畫開始之后應(yīng)用動畫變形 -
interpolator
設(shè)置這種效果隨時間改變的速度要指定一個插值器币励,需要引用android:anim/interpolatorName
處的系統(tǒng)動畫資源
如果沒有startOffset標(biāo)簽慷蠕,那么動畫集合眾的所有動畫效果都將會同時執(zhí)行
逐幀動畫可以用來創(chuàng)建Drawable的序列,每個Drawable都會在視圖的背景中持續(xù)一定的時間食呻。
因為逐幀動畫代表的是可以動的Drawable流炕,所以它們存儲在res/drawable文件夾中,并且使用文件名(沒有,xml擴(kuò)展名)來作為其資源Id的要播放動畫仅胞,首先將資源分配給要播放動畫的視圖每辟,然后獲得對Animation Drawable對象的引用并開始播放
使用動畫
補(bǔ)間View動畫 應(yīng)用于View ,關(guān)于位置干旧、大小渠欺、旋轉(zhuǎn)和透明度的改變。
逐幀動畫 每一幀顯示一個不同的Drawable椎眯。逐幀動畫可以在一個View中顯示挠将,并使用它的Canvas作為投影屏幕。
差值屬性動畫 可以讓應(yīng)用程序中的任何對象動起來编整。它是一個框架舔稀,在一定時間內(nèi),通過使用指定的內(nèi)插技術(shù)來影響任意的對象屬性掌测。
補(bǔ)間View動畫
提供一種簡單的,以最小資源消耗向用戶提供深度汞斧、移動或反饋。
補(bǔ)間動畫經(jīng)常用于:
- Activity間的轉(zhuǎn)換
- Activity內(nèi)的布局間的轉(zhuǎn)換
- 相同View中的不同內(nèi)容間的轉(zhuǎn)換
- 為用戶提供反饋断箫,例如提供進(jìn)度秋冰、通過“晃動”輸入框來說明錯誤或者無效的數(shù)據(jù)輸入
1.創(chuàng)建補(bǔ)間View動畫####
補(bǔ)間動畫是使用Animation類創(chuàng)建的仲义。
可用的動畫類型:
-
AlphaAnimation
改變透明度 -
RotateAnimation
在平面上旋轉(zhuǎn)選中的View Canvas
-
ScaleAnimation
允許縮放選中的View -
TranslateAnimation
移動選中的View
Android提供了AnimationSet類來對動畫進(jìn)行分組和配置,從而讓它們作為一個集合運(yùn)行剑勾。
可以定義集合中的每一個動畫的開始時間和持續(xù)時間,以此來控制動畫序列的時刻安排和順序虽另。
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> <scale android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0" android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" android:duration="1000" /> </set>
設(shè)置一個子動畫的開始偏移時間和持續(xù)時間是很重要的,否則它們就會同時開始和結(jié)束
2.應(yīng)用補(bǔ)間動畫####
通過調(diào)用startAnimation
方法捂刺,可以將動畫應(yīng)用到任意View
中谣拣,只需要傳遞給這個方法要應(yīng)用的動畫或者動畫集合即可
動畫序列將會運(yùn)行一次募寨,然后停止,除非使用動畫或者動畫集合中的setRepeatMode
和setRepeatCount
方法來修改這種行為森缠。可以通過把重復(fù)模式設(shè)置為RESTART
或者REVERSE
來強(qiáng)制動畫循環(huán)或者反向運(yùn)行贵涵。設(shè)置重復(fù)計數(shù)可以控制動畫重復(fù)的次數(shù)
myAnimation.setRepeatMode(Animation.RESTART); myAnimation.setRepeatCount(Animation.INFINITE); myView.startAnimation(myAnimation);
3.使用動畫監(jiān)聽器####
AnimationListener
創(chuàng)建一個事件處理程序,當(dāng)動畫開始或者結(jié)束的時候觸發(fā)它瓷马,這樣就可以在動畫之前或者結(jié)束之后執(zhí)行某些操作,例如改變View的內(nèi)容或者鏈接多個動畫
對Animation
對象調(diào)用setAnimationListener欧聘,并傳遞它一個新的setAnimationListener
實現(xiàn)坟奥,同時按要求重寫onAnimationEnd,onAnimationStart
和onAnimationRepeat