Android開發之對Frame動畫播放的補充
/*
* Android開發之對Frame動畫播放的補充
* 北京Android俱樂部群:167839253
* Created on: 2012-5-08
* Author: blueeagle
* Email: liujiaxiang@gmail.com
*/
上次談及Frame動畫播放,需要有很多幀的圖片。可以選擇定義一個AnimationDrawable對象,然後載入需要的Frame幀動畫圖片。一般而言,圖片在沒有特殊要求的情況下,一系列的圖片都做到了一張圖片上,這就要求開發人員懂得在圖片上做裁剪。需要的地方裁出來就可以了。
這裡涉及幾個知識點:
剪下地區:也稱可視地區,是由畫布進行設定的,它指的是在畫布上設定一塊地區,當畫布一旦設定了可視地區,那麼除此地區外,繪製的內容都將看不到。
/* * Android開發之Frame動畫播放的補充 * frameAnimationPlus.java * Created on: 2012-5-08 * Author: blueeagle * Email: liujiaxiang@gmail.com */ canvas.clipRect(0,0,bmpboom.getWidth()/10,bmpboom.getHeight());//假設是個爆炸效果的圖片,一共有10幀放在一起的 //繪製位元影像 canvas.drawBitmap(bmpboom, -currentFrame*bmpboom.getWidth()/10,0, paint);
代碼解釋:
currentFrame表示需要使用的當前圖片向X負座標的位移。可以選擇移動幀的位置。
預設繪製在畫布的(0,0)點。
將代碼寫入View架構的Draw()函數中,或者是SurfaceView架構的自訂繪製函數中。並做相應的重新整理操作就可以了。比如View架構中可以使用invalidate(),SurfaceView架構中可以使用線程的方式進行重新整理。
clipRect()函數就是繪製可視地區的剪下函數,表示從(0,0)點,到(x,y)點,X,Y為參數。
如果要將位元影像繪製在(x,y)點的話,則代碼應該如下編寫:
canvas.clipRect(x,y,x+bmpboom.getWidth()/10,y+bmpboom.getHeight()); //繪製位元影像 canvas.drawBitmap(bmpboom, x-currentFrame*bmpboom.getWidth()/10,y, paint);