Skip to content Skip to sidebar Skip to footer

Out Of Memory Error On Setimageresource

I'm making a board game, and I'm using a 10x10 GridView for the board. I've made a class ImageAdapter extending BaseAdapter which holds an Integer array of icons (9 patch files), a

Solution 1:

In your code mThumbIds are Ids of drawable. What you should do is you have to create a Thumb of particular image by following code.

publicstaticintcalculateInSampleSize(BitmapFactory.Options options,
        int reqWidth, int reqHeight) {
    // Raw height and width of imagefinalintheight= options.outHeight;
    finalintwidth= options.outWidth;
    intinSampleSize=1;

    if (height > reqHeight || width > reqWidth) {

        // Calculate ratios of height and width to requested height and// widthfinalintheightRatio= Math.round((float) height
                / (float) reqHeight);
        finalintwidthRatio= 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;
}

publicstatic Bitmap decodeSampledBitmapFromResource(Resources res,
        int resId, int reqWidth, int reqHeight) {

    // First decode with inJustDecodeBounds=true to check dimensionsfinal BitmapFactory.Optionsoptions=newBitmapFactory.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);
} 

Use this code,

decodeSampledBitmapFromResource(getResources(),R.drawable.xyz, 100, 100);

Here, 100 * 100 sample size you are providing. So Thumbnail of such size will be created.

Post a Comment for "Out Of Memory Error On Setimageresource"