参考资料
Android开发绕不过的坑:你的Bitmap究竟占多大内存?
相关因素
Bitmap 在内存当中占用的大小其实取决于:
- 色彩格式,前面我们已经提到,如果是 ARGB8888 那么就是一个像素4个字节,如果是 RGB565 那就是2个字节
- 原始文件存放的资源目录
- 目标屏幕的密度(所以同等条件下,红米在资源方面消耗的内存肯定是要小于三星S6的)
计算公式
int realWidth = (int) (rawWidth * targetDensity / (float) rawDensity + 0.5f)
int realHeight = (int) (rawHeight * targetDensity / (float) rawDensity + 0.5f)
int memory = realWidth * realHeight * bytes_for_current_colorMode;
- rawWidth就是资源图片的原始宽度
- targetDensity就是当前屏幕的density
- rawDensity就是资源图片所在的资源文件夹对应的density
- bytes_for_current_colorMode就是当前色彩格式下每个像素对应的字节数
BitmapFactory.Options:
If set to a value > 1, requests the decoder to subsample the original image, returning a smaller image to save memory.
网友评论