Tween動畫是展現(xiàn)出旋轉(zhuǎn)、漸變、移動、縮放的這么一種轉(zhuǎn)換過程,即補(bǔ)間動畫。Tween動畫有兩種定義方式:XML形式,編碼形式。 XML定義動畫,按照動畫定義語法完成XML,置于/res/anim目錄下,文件名作為資源ID引用; 編碼定義動畫,使用Animation對象。 XML定義動畫語法: XML文件中必須有一個根元素,可以是<alpha>、<scale>、<translate>、<rotate>中的任意一個,也可以是<set>來管理一個由前面幾個元素組成的動畫集合。 <set>是
一個動畫容器,管理多個動畫的群組,與之相對應(yīng)的Java對象是AnimationSet。它有兩個屬性,android:interpolator代表
一個插值器資源,可以引用系統(tǒng)自帶插值器資源,也可以用自定義插值器資源,默認(rèn)值是勻速插值器;稍后我會對插值器做出詳細(xì)講解。
android:shareInterpolator代表<set>里面的多個動畫是否要共享插值器,默認(rèn)值為true,即共享插值器,如果
設(shè)置為false,那么<set>的插值器就不再起作用,我們要在每個動畫中加入插值器。 <alpha>是 漸變動畫,可以實(shí)現(xiàn)fadeIn和fadeOut的效果,與之對應(yīng)的Java對象是AlphaAnimation。android:fromAlpha屬 性代表起始alpha值,浮點(diǎn)值,范圍在0.0和1.0之間,分別代表透明和完全不透明,android:toAlpha屬性代表結(jié)尾alpha值,浮點(diǎn) 值,范圍也在0.0和1.0之間。 <scale>是縮放動畫,可以實(shí)現(xiàn)動態(tài)調(diào)控件尺寸的效 果,與之對應(yīng)的Java對象是ScaleAnimation。android:fromXScale屬性代表起始的X方向上相對自身的縮放比例,浮點(diǎn)值, 比如1.0代表自身無變化,0.5代表起始時縮小一倍,2.0代表放大一倍;android:toXScale屬性代表結(jié)尾的X方向上相對自身的縮放比 例,浮點(diǎn)值;android:fromYScale屬性代表起始的Y方向上相對自身的縮放比例,浮點(diǎn)值;android:toYScale屬性代表結(jié)尾的 Y方向上相對自身的縮放比例,浮點(diǎn)值;android:pivotX屬性代表縮放的中軸點(diǎn)X坐標(biāo),浮點(diǎn)值,android:pivotY屬性代表縮放的中 軸點(diǎn)Y坐標(biāo),浮點(diǎn)值,對于這兩個屬性,如果我們想表示中軸點(diǎn)為圖像的中心,我們可以把兩個屬性值定義成0.5或者50%。 <translate>是 位移動畫,代表一個水平、垂直的位移。與之對應(yīng)的Java對象是TranslateAnimation。android:fromXDelta屬性代表起 始X方向的位置,android:toXDelta代表結(jié)尾X方向上的位置,android:fromYScale屬性代表起始Y方向上的位 置,android:toYDelta屬性代表結(jié)尾Y方向上的位置,以上四個屬性都支持三種表示方式:浮點(diǎn)數(shù)、num%、num%p;如果以浮點(diǎn)數(shù)字表 示,代表相對自身原始位置的像素值;如果以num%表示,代表相對于自己的百分比,比如toXDelta定義為100%就表示在X方向上移動自己的1倍距 離;如果以num%p表示,代表相對于父類組件的百分比。 <rotate>是旋轉(zhuǎn)動畫,與 之對應(yīng)的Java對象是RotateAnimation。android:fromDegrees屬性代表起始角度,浮點(diǎn)值,單位: 度;android:toDegrees屬性代表結(jié)尾角度,浮點(diǎn)值,單位:度;android:pivotX屬性代表旋轉(zhuǎn)中心的X坐標(biāo) 值,android:pivotY屬性代表旋轉(zhuǎn)中心的Y坐標(biāo)值,這兩個屬性也有三種表示方式,數(shù)字方式代表相對于自身左邊緣的像素值,num%方式代表相 對于自身左邊緣或頂邊緣的百分比,num%p方式代表相對于父容器的左邊緣或頂邊緣的百分比。 另外,在動畫中,如果我們添加了android:fillAfter="true"后,這個動畫執(zhí)行完之后保持最后的狀態(tài);android:duration="integer"代表動畫持續(xù)的時間,單位為毫米。 XML動畫使用代碼: ImageView image = (ImageView) findViewById(R.id.image); Animation testAnim = AnimationUtils.loadAnimation(this, R.anim.test); image.startAnimation(testAnim); |
|