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设置到控件上即可。

  • 相关阅读:
    cookie 当天12点 过期
    ps 前端常用技巧
    定时器遇到的坑
    ajax 会遇到的问题总结
    立即执行函数表达式 项目经常用到js 代码Module模式
    Hello world
    div position:fixed后,水平居中的问题
    关于div中图片水平垂直居中的问题
    [学习]Activiti流程引擎 入门(1) 初步认识
    SSO框架介绍前篇
  • 原文地址:https://www.cnblogs.com/yushilong/p/4347513.html
Copyright © 2011-2022 走看看