編輯:Android資訊
默認情況下,每個android程序的dailvik虛擬機的最大堆空間大小為16M
當加載的圖片太多或圖片過大時經常出現OOM問題
android 中用bitmap 時很容易內存溢出,報如下錯誤:Java.lang.OutOfMemoryError

public Bitmap matrixBitmapSize(Bitmap bitmap, int screenWidth,
int screenHight) {
//獲取當前bitmap的寬高
int w = bitmap.getWidth();
int h = bitmap.getHeight();
Matrix matrix = new Matrix();
float scale = (float) screenWidth / w;
float scale2 = (float) screenHight / h;
// 取比例小的值 可以把圖片完全縮放在屏幕內
scale = scale < scale2 ? scale : scale2;
// 都按照寬度scale 保證圖片不變形.根據寬度來確定高度
matrix.postScale(scale, scale);
// w,h是原圖的屬性.
return Bitmap.createBitmap(bitmap, 0, 0, w, h, matrix, true);
}
public Bitmap optionsBitmapSize(String imagePath, int screenWidth,
int screenHight) {
// 設置解析圖片的配置信息
BitmapFactory.Options options = new Options();
// 設置為true 不再解析圖片 只是獲取圖片的頭部信息及寬高
options.inJustDecodeBounds = true;
// 返回為null
BitmapFactory.decodeFile(imagePath, options);
// 獲取圖片的寬高
int imageWidth = options.outWidth;
int imageHeight = options.outHeight;
// 計算縮放比例
int scaleWidth = imageWidth / screenWidth;
int scaleHeight = imageHeight / screenHight;
// 定義默認縮放比例為1
int scale = 1;
// 按照縮放比例大的 去縮放
if (scaleWidth > scaleHeight & scaleHeight >= 1) {
scale = scaleWidth;
} else if (scaleHeight > scaleWidth & scaleWidth >= 1) {
scale = scaleHeight;
}
// 設置為true開始解析圖片
options.inJustDecodeBounds = false;
// 設置圖片的采樣率
options.inSampleSize = scale;
// 得到按照scale縮放後的圖片
Bitmap bitmap = BitmapFactory.decodeFile(imagePath, options);
return bitmap;
}
Android應用架構變更背後的經驗、失誤與推論
軟件代碼庫各個不同的部分應當彼此獨立,其整體卻猶如一部運轉良好的機器 Android的開發生態系統發展迅速,每周都有變化,人們不停地創建新工具、更新資源庫、撰寫博
5個最佳的Android測試框架(帶示例)
本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃! 谷歌的Android生態系統正在不斷地迅速擴張。有證據表明,新的移
對Android初學者的10個建議
本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃! 這些Android開發的技巧都是我個人的經驗。總共10條,所以我又
Android性能優化之運算篇
運算篇 1) Intro to Compute and Memory Problems Android中的Java代碼會需要經過編譯優化再執行的過程。代碼的不同寫