无法使用位图分配 - Android

时间:2017-05-23 14:41:17

标签: java android bitmap allocation

我尝试在UI上应用少量图片。我使用bitmap来实现这一点,因为我没有任何空间可以使用简单的setImageResource。 问题是分配失败。

  

java.lang.OutOfMemoryError:无法分配带有16765312个空闲字节的93600012字节分配和70MB直到OOM

如果你能帮助我解决这个问题,我会很高兴。

int imgResource = item.getIcon(); // for example imgResource = R.drawable.test
Drawable drawable = context.getResources().getDrawable(imgResource); //Here I get the error 
Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();
holder.iv.setImageBitmap(bitmap);

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试这种方法。添加android:largeHeap="true"

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

使用此方法并传递上下文和图像文件名:

public Bitmap getAssetImage(Context context, String filename) throws IOException {
    AssetManager assets = context.getResources().getAssets();
    InputStream buffer = new BufferedInputStream((assets.open("drawable/" + filename + ".png")));
    Bitmap bitmap = BitmapFactory.decodeStream(buffer);
    return bitmap;
   // return new BitmapDrawable(context.getResources(), bitmap);
}