我正在開發一款遊戲,並且正在處理圖形,我遇到了一些關閉的問題。所以我的問題是:我們如何讓圖像在android中消耗更少的內存?如何讓我的圖像消耗更少的內存? (已解決)
我會解釋我的遊戲,它是一個邏輯遊戲,有一些小圖像和背景。我正在用星系筆記,1 GB內存測試應用程序,我認爲它可能需要高分辨率,但如果我使用大圖像作爲背景,它會在進入暫停佈局並返回後關閉。
所以我降低了圖形,並完成了沒有強制關閉。無論如何有沒有辦法來避免這種記憶問題?我直接在xml上設置圖像是否是錯誤的?
我決定去用這種方法,這要歸功於Durairaj Packirisamy的答案
這裏是我的代碼:
Bitmap unscaledimgswitch = BitmapFactory.decodeResource(getResources(), R.drawable.switch1on);
ImageView switch1 = (ImageView) findViewById(R.id.switch1);
int viewheight = screenheight/10;
int imgheight = unscaledimgswitch.getHeight();
switch1.getLayoutParams().height = viewheight;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
options.inSampleSize = ScaledFactor.getScaleFactor(imgheight ,viewheight); // de esta forma cargo la imagen del tamaño exacto necesario
options.inJustDecodeBounds = false;
imgswitch = BitmapFactory.decodeResource(getResources(), R.drawable.switch1on, options);
switch1.setImageBitmap(imgswitch);
而在其他類
static int getScaleFactor(int imgheight, int viewheight) {
int result;
result = imgheight/viewheight ;
return result;
}
一樣高的分辨率是我想你應該只包括你需要的大小,每個LDPI,MDPI,華電國際和xhdpi,或圖像更高的密度。例如,你不需要1600×900的圖像1280x800銀河注(xhdpi) –
我知道,但它不是我要求的。 :) – Rodrigofantino
你問如何避免內存問題,沒有設置過大的位圖到不必要的密度是答案 –