加载大图片的OOM异常

* 原因:系统分配给应用程序的堆内存 < 图片的大小
* 解决方案:缩放图片显示
* OOM:
OutOfMemoryError
* 图片的宽高
  * 宽 2400
  * 高 3200

* 手机屏幕的宽高
  * 宽 320
  * 高 480

* 缩放比例
  * 图片的宽 / 屏幕的宽
    * 2400 / 320 = 7.5
  * 图片的高 / 屏幕的高
    * 3200 / 480 = 6.7

如果图片超过系统所分配的内存大小就会OOM

 

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.ImageView;
public class MainActivity extends Activity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      ImageView iv = (ImageView) findViewById(R.id.iv);    
      Bitmap bmp = BitmapFactory.decodeFile("/mnt/sdcard/dog.jpg");
      iv.setImageBitmap(bmp);
   }
}

 

 

原文地址:https://www.cnblogs.com/loaderman/p/6421265.html