1.图片内存溢出

默认情况下,每个android程序的dailvik虚拟机的最大堆空间大小为16M
当加载的图片太多或图片过大时经常出现OOM问题
android 中用bitmap 时很容易内存溢出,报如下错误:Java.lang.OutOfMemoryError


2.解决办法

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;// 返回为nullBitmapFactory.decodeFile(imagePath, options);// 获取图片的宽高int imageWidth = options.outWidth;int imageHeight = options.outHeight;// 计算缩放比例int scaleWidth = imageWidth / screenWidth;int scaleHeight = imageHeight / screenHight;// 定义默认缩放比例为1int 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;}




更多相关文章

  1. android IOC框架解析(上)
  2. Android(安卓)ApiDemos示例解析(98):Views->Animation->Shake
  3. android 给图片加文字、图片水印
  4. Android(安卓)APP原型图设计规范
  5. Android(安卓)Service最全面的解析
  6. Android(安卓)ApiDemos示例解析(194):Views->Tabs->Content By F
  7. XML的解析中的三种方法
  8. Android(安卓)ImageView 图片设置为透明
  9. Android动画Animator开发问题

随机推荐

  1. Android(安卓)ViewFlipper实现页面的滑动
  2. android CoordinatorLayout使用
  3. 自定义Dialog步骤
  4. android中怎样适应多个屏幕
  5. Android手机拍照(Android学习随笔九)
  6. android 界面着色推荐
  7. Runtime.exec 执行命令行
  8. Android(安卓)Accessibility : TalkBack
  9. 安卓指定横竖屏失效问题修复
  10. 图片处理