android frame 幀動畫

幀動畫實(shí)際有若干圖像組成的動畫,這些圖像以一定的時間間隔順序播放,由于人的視覺停留,看起來像一個動畫

由于eclipse中定義幀動畫布局是在res/anim文件夾下,但是在AndroidStudio中會報錯,所以,在AndroidStudio中將幀動畫的布局文件定義在res/drawable文件夾下

1,AnimationDrawable類

start() 開始播放

stop() 停止播放

isRunning() 是否在運(yùn)行

isOneShot() 動畫是否重復(fù)運(yùn)行

setOneShot(boolean oneShot)? 設(shè)置動畫重復(fù)運(yùn)行 true運(yùn)行一次 false無限次運(yùn)行

setVisible(boolean visible, boolean restart) 是否課件

getNumberOfFrames() 一共有幾貞

getFrame(int index) 根據(jù)下標(biāo)獲得某貞動畫

getDuration(int i)? 時間間隔

addFrame(Drawable frame, int duration) 添加幀動畫,可以是一幀,也可以是一個動畫,當(dāng)為動畫是,duration標(biāo)示添加的動畫播放時間,即使當(dāng)前動畫沒有播完也會直接跳過播放第一個動畫

2,動畫一般在drawable中創(chuàng)建xml格式文件,文件中有animation-list和若干個item組成,動畫的播放順序?yàn)閕tem的順序

3,添加動畫方式

注意:

1> 一般播放動畫之前會先執(zhí)行stop,在執(zhí)行start,這是因?yàn)橹徊シ乓淮蝿赢?,動畫會停留在最后一幀,這時候還是處于運(yùn)行狀態(tài),也就是isRunning返回true,因此播放前先用stop停止在進(jìn)行start播放

2> addfragment添加一個新動畫,在停止原來動畫時,并不會停止新添加的動畫,也就是新添加的動畫被看做一個整體,要想停止必須獲得新動畫的animationDrawable對象,添加動畫受時間限制(addFragment第二個參數(shù)),即使到了停留時間未播放完,也會切換到下一個動畫

4,監(jiān)聽動畫中每一幀的播放狀態(tài)

1>由于animation狀態(tài)中并沒有提供當(dāng)前播放的哪一幀,但在源碼中發(fā)現(xiàn)mCurFragment來保存當(dāng)前的哪一幀,但該方法是私有的需要通過Java發(fā)射來修改這個變量的值

2>繼承imageView類重寫onDraw方法來監(jiān)聽每一幀的播放狀態(tài),當(dāng)每一幀的動畫開始播放時都會走ondraw方法

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

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,291評論 25 708
  • Android框架提供了兩個動畫系統(tǒng),屬性動畫(property animation )和視圖動畫(view an...
    wenny826閱讀 2,418評論 0 2
  • 前言 我們每一個的selenium測試都應(yīng)該在指定的環(huán)境下運(yùn)行,這個環(huán)境可以是web瀏覽器、移動設(shè)備、移動模擬器等...
    苦葉子閱讀 18,945評論 2 8
  • 你說你的夢想里 也許 藏著好多關(guān)于我的 秘密 你說你會愛我 用揉碎骨頭的氣力 擁抱我 就像害怕失去我那樣 愛我 你...
    月出雅南閱讀 404評論 0 3
  • -1- 開篇詩歌之感 沒有到死,我怎么知道什么是將來? 沒有經(jīng)...
    木木木之森閱讀 302評論 0 0

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