BitmapFactory.Options
BitmapFactory.Options options= new BitmapFactory.Options();
options.inJustDecodeBounds = true;
//避免OOM 该字段设置为true的话,那么返回的就不是Bitmap对象,而是返回该对象的宽和高的参数
BitmapFactory.decodeFile(path,options); //将图片文件解析成Bitmap对象
int width = options.outWidth;
int height = options.outHeight;
//获取解析完成图片的宽和高
//将一个图片按照指定的宽高显示
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
options.outWidth = width;
options.outHeight = height;
Bitmap bitmap = BitmapFactory.decodeFile(path,options);
imageView.setBitmap(bitmap);
options.inDither = false; //不进行图片的抖动处理
options.inPreferredConfig = Bitmap.Config.ARGB_4444;//默认是Bitmap.Config.ARGB_8888 设置解码器,以最佳的方式进行解码
option.inPurgeable = true;
/*
如果inPurgeable 设为True的话表示使用BitmapFactory创建的Bitmap用于存储Pixel的内存空间在系统内存不足时可以被回收,在应用需要再次访问Bitmap的Pixel时(如绘制Bitmap或是调用getPixel),系统会再次调用BitmapFactory decoder重新生成Bitmap的Pixel数组。为了能够重新解码图像,bitmap要能够访问存储Bitmap的原始数据。
*/
options.inInputShareable = true;
/*
在inPurgeable为false时表示创建的Bitmap的Pixel内存空间不能被回收,这样BitmapFactory在不停decodeByteArray创建新的Bitmap对象,不同设备的内存不同,因此能够同时创建的Bitmap个数可能有所不同, 200个bitmap足以使大部分的设备重新OutOfMemory错误。当isPurgable设为true时,系统中内存不足时,可以回收部分Bitmap占据的内存空间,这时一般不会出现OutOfMemory 错误。
*/
Notice:
options.inPurgeable = true; 必须和options.inInputShareable = true;一起使用