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