2014-11-23 77 views
1

我目前正在爲學校開發一款簡單的Android遊戲,遊戲在內存不足和崩潰之前運行一段時間。我懷疑這與我在遊戲中使用的圖像數量有關(對於10個以上的項目/字符/按鈕,小型的10-20 KB大小的文件,以及用於啓動畫面的非常大的450 KB PNG文件背景)。活動中的背景位圖圖像?

我一直在使用BitmapFactory解碼所有我的小項目PNG格式的,我也能夠將背景設置爲我的主要GameView因爲這樣(只包含的示例代碼的最低限度):

public class GameView extends SurfaceView implements SurfaceHolder.Callback { 

private Bitmap background, invincibleBitmap; 

//Sets the background bitmap to an image scaled to the same size as the user's screen 
background = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.background), getWidth(), getHeight(), false); 
invincibleBitmap = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.invincible_item), 60, 60, false); 

對於我前面提到的啓動畫面,但是,我已經使用活動的佈局XML文件來設置圖像,從而得到:

android:background="@drawable/main" 

我希望能夠擴展main.png以同樣的方式我在一個活動視圖中做過,希望能夠幫助內存超載blem。我會如何去做這件事?我一般是Android的初學者,所以解決方案越簡單越好。

+0

圖片使用的內存與文件大小無關。它與圖像的規格有關。 widthxheight – hasan83 2014-11-23 23:45:50

+0

你不應該在啓動畫面上做到這一點。作爲快速解決方案。將主圖像複製並粘貼到所有可繪製文件夾。所有文件夾中的相同圖像。令人驚訝的是你會看到一個不同的。 – hasan83 2014-11-23 23:49:18

+0

但是,不要只是這樣做。您應該爲每個屏幕分辨率類別(xx,x,l,m)提供主圖像的4個圖像。那你如何開發android應用程序。 – hasan83 2014-11-23 23:51:08

回答

0

要指出,圖像文件大小不會影響內存使用情況。它取決於圖像規格:寬x高x 1字節。

根據屏幕分辨率的不同,您不應該在代碼中設置啓動屏幕圖像。可繪製的文件夾在那裏。爲每個屏幕分辨率類別(l,m,x,xx,xxx)提供具有不同規格的不同圖像。

作爲一個快速的解決方案,複製和相同的圖像粘貼到所有 繪製文件夾。令人驚訝的是,你會發現一個區別。

+0

對不起,我之前無法接受它,因爲您評論過它而不是回答它。再次感謝你的幫助! – jycdartmniac 2014-12-01 14:52:02