java 加载图片,就可以防止内存溢出,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 加载图片,就可以防止内存溢出,相关的知识,希望对你有一定的参考价值。

package com.xunfang.viewpagert;
 
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
 
public class LoadBitmapUtils {
 
    /**
     *   直接调用这个方法,加载图片,就可以防止内存溢出,大家可以补充一些重载的方法哈
     * @Title: ViewPagerT2
     * @Description: TODO
     * @param res  
     * @param resId
     * @param reqWidth  缩小后的宽,单位dp
     * @param reqHeight  缩小后的长,单位dp
     * @return
     */
    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) {
 
            final int halfHeight = height / 2;
            final int halfWidth = width / 2;
 
            // Calculate the largest inSampleSize value that is a power of 2 and
            // keeps both
            // height and width larger than the requested height and width.
         
            while ((halfHeight / inSampleSize) > reqHeight
                    && (halfWidth / inSampleSize) > reqWidth) {
                inSampleSize *= 2;
            }
        }
 
        return inSampleSize;
    }
}

以上是关于java 加载图片,就可以防止内存溢出,的主要内容,如果未能解决你的问题,请参考以下文章

java 加载图片,就可以防止内存溢出,

使用软引用和弱引用防止内存溢出

Android之ListView异步加载网络图片(优化缓存机制)

解决Android加载图片时内存溢出的问题

ImageView内存溢出

使用Matrix对图片进行缩放后的内存溢出问题???