android tween補間動畫

如果動畫中的圖像變化比較有規(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,自定義動畫渲染器

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Animation Animation類是所有動畫(scale、alpha、translate、rotate)的基...
    四月一號閱讀 2,036評論 0 10
  • 1.1幀動畫概念以及用法 幀動畫非常容易理解,其實就是簡單的由N張靜態(tài)圖片收集起來,然后我們通過控制依次顯示 這些...
    侯蛋蛋_閱讀 654評論 0 1
  • 前言 在學(xué)習(xí)了Android的動畫之后,簡單總結(jié)了一下,看完這篇文章就可以自己動手寫一個簡單的動畫了 正文 An...
    墨月城汐閱讀 1,582評論 0 5
  • 1 背景 不能只分析源碼呀,分析的同時也要整理歸納基礎(chǔ)知識,剛好有人微博私信讓全面說說Android的動畫,所以今...
    未聞椛洺閱讀 2,861評論 0 10
  • 天行健,君子以自強不息;地勢坤,君子以厚德載物。 時間一天一天過去,灰色階段,悲傷的一切隨著時間一點一點的消逝,日...
    94Dboy閱讀 373評論 0 0

友情鏈接更多精彩內(nèi)容