2012-04-15 59 views
2

我正在嘗試製作一個具有大約20-30幅資源圖像的Android應用程序。這些圖像用於在畫布上顯示連續的動畫,所以我想知道我應該使用什麼容器來存儲這些圖像以獲得最佳性能?什麼容器應該用於位圖?

+0

你試圖做一個實際的動畫(看起來像它的移動),或者是你談論某種動畫的幻燈片放映? – 2012-04-15 16:06:20

回答

1

這聽起來像你已經明白,這些照片應該進入RES /繪製目錄(如果沒有,那就是他們去)。

假設你命名你的圖像類似「image0」,「圖像1」,「圖像2」等你其實可以通過這些字符串循環,並加載它們像這樣:

int myImgLen = 10;//or however many images you have, you can also do this dynamically looking for when getIdentifier returns 0, which means it didn't find anything at that name 
ArrayList<Bitmap> myList = new ArrayList<Bitmap>; 
for(int i = 0; i < myImgLen; i++) 
myList.add(BitmapFactory.decodeResource(this.getResources(), 
    this.getResources().getIdentifier("image" + i, "drawable", getPackageName())) 
); 

這將您的圖像加載到數組列表。

然後您可以簡單地myCanvas.drawBitmap(myList.get(i));將它們繪製到您的畫布上。

但是請記住(這是非常重要的),這在內存消耗方面極其昂貴。這不要緊,如果你的圖像是真的很好壓縮JPG文件,當您將裝入位圖,它們爆炸的每個像素佔據儘可能多的空間需要按什麼配置你使用加載圖像。所以,如果你用一些小圖像做這個動畫來運行它們,那就可以,但是如果你希望有一些與設備尺寸相同的東西(比如牆紙),你肯定會得到一個OutOfMemory異常,除非您隨時加載和釋放位圖(在其上調用recycle())。

但是,如果你這樣做對他們調用循環()作爲你的動畫,然後你會看到很多動畫的圖像加載暫停的。

+0

感謝您的回答,它有很大的幫助。 – sth4 2012-04-15 16:41:09

+0

不客氣! :) – 2012-04-15 19:54:30

相關問題