ViewPager片段显示加载ImageViews的内存错误

时间:2015-06-05 07:26:03

标签: android android-fragments android-viewpager android-bitmap

我有ViewPager Fragment来自PagerAdapterFragment有4个ImageViews,我想用我的Drawable文件夹中的图片设置背景。可抽出物大约80dp,每个大小约30kb。我使用以下内容填充ImageViews,其中MyIMGS是ImageViews的数组。

switch (Mynum)
{
case 0: 

    int Array1[] = args.getIntArray("Array_A");
    for(int i=0;i<Array1.length;i++)
    {
        MyIMGS[i].setBackgroundResource(Array1[i]);

    }
    break;
case 1:
    int Array2[] = args.getIntArray("Array_A");
    for(int i=0;i<Array2.length;i++)
    {
        MyIMGS[i].setBackgroundResource(Array2[i]);

    }
    break;
    }

第一个问题是经过一段时间后来回按下一个很好的消息outofMemory。 我尝试了以下解决方案

private static Bitmap decodeResource(Resources res, int resId ,int reqWidth,int reqHeight)
{
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);

}

IMGS[i].setImageBitmap(decodeResource(getResources(), Array1[i], 100, 100));

通过使用上面的新问题,我的来自Drawable文件夹的20个图像在4个图像视图中一个显示在另一个上面。它就像For循环不是为MyIMGS数组执行而是为每个元素分别执行! 我的问题是:对于这样的小文件,我需要解码资源,如果是,为什么图像以这种方式显示。

1 个答案:

答案 0 :(得分:0)

我怀疑MyIMGS的数组元素是在同一位置定义的ImageView。也许您应该发布MyIMGS及其布局xml文件的代码。