2011-11-13 37 views
3

我在這裏看到了類似的線程,但找不到足夠的解決方案。具有大量位圖的動畫

我正在處理我的第一個Android應用程序,並嘗試使用大量圖像/位圖創建動畫。我有一個位圖列表,我喜歡播放逐幀動畫 圖像數量可能會從幾個變成數百個(當前從資源加載)

我使用SurfaceView並使用以下內容來加載和畫我的圖片

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), res); 
canvas.drawBitmap(bitmap, x, y, null); 

我嘗試了兩種方法:

  1. 預加載所有圖像和高速緩存到內存中。結果很好 但需要時間進行初始化,使用大量內存並僅適用於少量圖像

  2. 逐個解碼圖像。這將導致業績較差和高CPU使用率

我正在尋找方法來提高大型列表的性能, 是否有緩存解碼的位圖或將其轉換爲一些視頻流(無損的方式?)來提升性能?

任何想法?

回答

1

關於性能, 首先不加載孔圖像尺寸,使用下面的方法,以減少大小時負荷的形象:

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inSampleSize = number; //reduce image size 
Bitmap b = BitmapFactory.decodeFile(image path, options); 

還加載當前時間的動畫圖像並不是所有的動畫,然後加載其他動畫線程而不是完成的動畫。

關於情況2中的時間,在thread中加載圖像並顯示用戶的加載對話框,直到加載所有圖像。