如果動畫中的圖像變化比較有規(guī)律時,可以采用自動生成中間圖像的方式來生成圖像,例如圖像的移動,旋轉(zhuǎn),縮放等再比如有正方形變成圓形,圓形變橢圓形,都可以根據(jù)數(shù)學(xué)公式算法自動生成,我們只需要指定動畫的第一幀和最后一幀即可,這種自動生成中間圖像的動畫稱為補間動畫。
優(yōu)點:節(jié)省硬盤空間,因為只需提供第一幀和最后一幀
缺點:動畫很復(fù)雜時無法自動生成中間圖像,例如電影畫面組成的動畫,每一幀過于復(fù)雜,這就需要使用Framz幀動畫來完成
補間動畫定義在res/anim文件夾中
1,動畫加載AnimationUtils
用到了android.view.animation.AnimationUtils類來裝載動畫
Animation animation_translate = AnimationUtils.loadAnimation(this, R.anim.anim_translate);第二個參數(shù)標示要加載的動畫文件
2,translate 平移
fromXDelta:動畫起始位置的橫坐標
toXDelta:動畫結(jié)束位置的橫坐標
fromYDelta:動畫起始位置的縱坐標
toYDelta:動畫結(jié)束位置的縱坐標
duration:動畫持續(xù)時間,單位毫秒,動畫從起始到結(jié)束的時間
repeatCount: 動畫播放次數(shù),默認0,可以設(shè)置infinite或-1
repeatMode:重復(fù)模式,默認restart,該屬性只有當(dāng)repeatCount設(shè)置成大于0或者infinite時起作用,還有個值是reverse,標示偶數(shù)次顯示動畫與定義的動畫效果相反,比如動畫縮小,但是在2,4,6等偶數(shù)時動畫實現(xiàn)相反的操作,既動畫執(zhí)行放大操作。
interpolator:動畫渲染器,共有三個動畫渲染器:
accelerate_interpolator:動畫加速器
decelerate_interpolator:動畫減速器
cycle_interpolator:震動渲染器
accelerate_decelerate_interpolator:動畫加速減速器,動畫開始前半部分最快,動畫后半部分最慢
示例:
除了使用下面這種方式,還可以在Java中使用android.view.animation.TranslateAnimation對象實現(xiàn)移動效果


3,scale? 縮放
fromXScale:沿著x軸縮放的起始比例
toXScale:沿著x軸縮放的結(jié)束比例
fromYScale:沿著y軸縮放的起始比例
toYScale:沿著y軸縮放的結(jié)束比例
pivotX:沿x軸方向縮放的支點位置,50%則表示在x軸方向的中心位置
pivotY:沿y軸方向縮放的支點位置,50%則表示在y軸方向的中心位置
duration:動畫持續(xù)時間,單位毫秒,動畫從起始到結(jié)束的時間
repeatCount:動畫播放次數(shù),默認0,可以設(shè)置infinite或-1
repeatMode:重復(fù)模式,默認restart,該屬性只有當(dāng)repeatCount設(shè)置成大于0或者infinite時起作用,還有個值是reverse,標示偶數(shù)次顯示動畫與定義的動畫效果相反,比如動畫縮小,但是在2,4,6等偶數(shù)時動畫實現(xiàn)相反的操作,既動畫執(zhí)行放大操作。
注意:
前四個屬性的取值如下:
0.0 表示收收縮到?jīng)]有
1.0表示正常不收縮
大于1.0 表示將組件放大到相應(yīng)的比例,如1.5 表示放大到原組件的1.5倍
小于1.0 表示將組件縮小到相應(yīng)的比例,如0.5 表示縮小到原組件的0.5倍
示例:
還可以在java中使用android.view.animation.ScaleAnimation對象實現(xiàn)縮放操作


4,rotate 旋轉(zhuǎn)
fromDegrees:旋轉(zhuǎn)的起始角度
toDegrees:旋轉(zhuǎn)的結(jié)束角度
pivotX:沿x軸方向旋轉(zhuǎn)的支點位置,50%則表示在x軸方向的中心位置
duration:動畫持續(xù)時間,單位毫秒,動畫從起始到結(jié)束的時間
repeatCount:動畫播放次數(shù),默認0,可以設(shè)置infinite或-1
repeatMode:重復(fù)模式,默認restart,該屬性只有當(dāng)repeatCount設(shè)置成大于0或者infinite時起作用,還有個值是reverse,標示偶數(shù)次顯示動畫與定義的動畫效果相反,比如動畫縮小,但是在2,4,6等偶數(shù)時動畫實現(xiàn)相反的操作,既動畫執(zhí)行放大操作。
示例:
還可以在java中使用android.view.animation.RotateAnimation對象實現(xiàn)縮放操作

5,alpha 透明度
fromDegrees:起始透明度
toDegrees:結(jié)束透明度
duration:動畫持續(xù)時間,單位毫秒,動畫從起始到結(jié)束的時間
repeatCount:動畫播放次數(shù),默認0,可以設(shè)置infinite或-1
repeatMode:重復(fù)模式,默認restart,該屬性只有當(dāng)repeatCount設(shè)置成大于0或者infinite時起作用,還有個值是reverse,標示偶數(shù)次顯示動畫與定義的動畫效果相反,比如動畫縮小,但是在2,4,6等偶數(shù)時動畫實現(xiàn)相反的操作,既動畫執(zhí)行放大操作。
示例:
還可以在java中使用android.view.animation.AlphaAnimation對象實現(xiàn)縮放操作

6,同時執(zhí)行多中效果
需要在set中設(shè)置多種效果

7,監(jiān)聽一個動畫執(zhí)行的狀態(tài)
實現(xiàn)AnimationListener接口,需要實現(xiàn)三個方法
setAnimationListener();給動畫設(shè)置監(jiān)聽對象,

8,自定義動畫渲染器

