zoukankan      html  css  js  c++  java
  • Android中由于设置的背景图片太大导致OOM

    Android中由于设置的背景图片太大可能会导致OOM

    例如mImageView.setImageBitmap();

    布局文件中

    android:background="@drawable/xxx.jpg"

    下面提供其中的一种处理方式:

    public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,
                                                                 int reqWidth, int reqHeight) {
                // First decode with inJustDecodeBounds=true to check dimensions
                final BitmapFactory.Options options = new BitmapFactory.Options();
                options.inJustDecodeBounds = true;
                BitmapFactory.decodeResource(res, resId, options);
                // Calculate inSampleSize
                options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
                // Decode bitmap with inSampleSize set
                options.inJustDecodeBounds = false;
                return BitmapFactory.decodeResource(res, resId, options);
            }
    
            public static int calculateInSampleSize(
                    BitmapFactory.Options options, int reqWidth, int reqHeight) {
                // Raw height and width of image
                final int height = options.outHeight;
                final int width = options.outWidth;
                int inSampleSize = 1;
                if (height > reqHeight || width > reqWidth) {
                    // Calculate ratios of height and width to requested height and width
                    final int heightRatio = Math.round((float) height / (float) reqHeight);
                    final int widthRatio = Math.round((float) width / (float) reqWidth);
    
                    // Choose the smallest ratio as inSampleSize value, this will guarantee
                    // a final image with both dimensions larger than or equal to the
                    // requested height and width.
                    inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;
                }
                return inSampleSize;
            }

    通过在代码中对所需要加载的图片进行处理,得到的bitmap设置到控件上即可。

  • 相关阅读:
    引用类型之Object类
    原始类型之String类型
    原始类型之Boolean类型
    引用类型之Boolean类
    引用类型之instanceof运算符
    javascript类型转换
    运算符之一元运算符
    Google Sites开始向所有人免费开放 可自由建个人主页
    在线制作"篆体印章",很酷!
    MD5 哈希计算工具类
  • 原文地址:https://www.cnblogs.com/yushilong/p/4347513.html
Copyright © 2011-2022 走看看