Android位图 - 内存不足

时间:2015-11-02 21:31:08

标签: java android image bitmap

我遇到了一个我实现的功能问题。在某些手机上,我出现内存不足错误。

private Bitmap getIconMarkerOfPlayer(Player p) {
    Drawable drawable = getIconOfPlayer(p);
    Bitmap img = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_4444);
    Canvas canvas = new Canvas(img);
    drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
    drawable.draw(canvas);

    final float scale = this.getResources().getDisplayMetrics().density;
    int heigthPixels = (int) (24 * scale + 0.5f);
    int widthPixels = (int) (24 * scale + 0.5f);
    return Bitmap.createScaledBitmap(img, widthPixels, heigthPixels, false);
}

getIconMarkerOfPlayer(Player p)功能提供"编程"取决于玩家的状态(死亡,活着,离线......)及其颜色。每个玩家在早期游戏中都会分配一种独特的颜色。

如何在没有内存不足错误的情况下从Drawable对象调整位图大小?

1 个答案:

答案 0 :(得分:1)

我建议您使用一些ImageLibraries有效地加载位图。

其中一些是FrescoGlidePiccasio

我建议你选择Glide。看看它here