幀動畫實(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方法


