如何测量或估计不支持bitmap.getByteCount()的Android版本中的位图大小

时间:2012-02-01 12:11:27

标签: android bitmap android-image

我最近在Android上关注了Googles Advice on Bitmap Caching,并从支持库中添加了我自己的LruCache。如果缓存已知图像的大小(以字节为单位),则LruCache的效果最佳。

问题是,位图的getByteCount仅在Android API Level 11之后可用。

您如何猜测内存中位图的大小?

2 个答案:

答案 0 :(得分:5)

来自android.graphics.Bitmap源代码:

public final int getByteCount() {
        // int result permits bitmaps up to 46,340 x 46,340
        return getRowBytes() * getHeight();
    }

{1}}和getRowBytes()都是API级别1,因此您可以为所有版本的Android实施自己的getHeight()。乍看之下,getByteCount()似乎只是为方便起见而添加的。

答案 1 :(得分:2)

取决于您使用的Bitmap.Config,不是吗? ARGB_8888 - 应该在宽度*高度* 4字节解压缩的地方结束。