Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.weixin, options);
//Bitmap bitmap = BitmapFactory.decodeFile(“mnt/sdcard/weixin.png”, options);
imageView.setImageBitmap(bitmap);
Log.i("!!!", “bitmap:ByteCount = " + bitmap.getByteCount() + “:::bitmap:AllocationByteCount = " + bitmap.getAllocationByteCount());
Log.i(”!!!”, “width:” + bitmap.getWidth() + “:::height:” + bitmap.getHeight());
Log.i("!!!", “inDensity:” + options.inDensity + “:::inTargetDensity:” + options.inTargetDen
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享
sity);
Log.i("!!!", “imageview.width:” + imageView.getWidth() + “:::imageview.height:” + imageView.getHeight());
}
ps:这里提一下,使用 Bitmap 的 getByteCount()
方法可以获取当前图片占用的内存大小,当然在 api 19 之后有另外一个方法,而且当 bitmap 是复用时获取的大小含义也有些变化,这些特殊场景就不细说,感兴趣自行查阅。反正这里知道,大部分场景可以通过 getByteCount()
打印图片占用的内存大小来验证我们的实验即可。
图片就是上图那张:分辨率为 1080*452 的 png 格式的图片,图片文件本身大小 56KB
序号 | 前提 | Bitmap内存大小 |
---|---|---|
1 | 图片位于res/drawable,设备dpi=240,设备1dp=1.5px,控件宽高=50dp | 4393440B(4.19MB) |
2 | 图片位于res/drawable,设备dpi=240,设备1dp=1.5px,控件宽高=500dp | 4393440B(4.19MB) |
3 | 图片位于res/drawable-hdpi,设备dpi=240,设备1dp=1.5px | 1952640B(1.86MB) |
4 | 图片位于res/drawable-xhdpi,设备dpi=240,设备1dp=1.5px | 1098360B(1.05MB) |
5 | 图片位于res/drawable-xhdpi,**设备dpi=160,**设备1dp=1px | 488160B(476.7KB) |
6 | 图片位于res/drawable-hdpi,设备dpi=160,设备1dp=1px | 866880(846.5KB) |
7 | 图片位于res/drawable,设备dpi=160,设备1dp=1px | 1952640B(1.86MB) |
8 | 图片位于磁盘中,设备dpi=160,设备1dp=1px | 1952640B(1.86MB) |
9 | 图片位于磁盘中,设备dpi=240,设备1dp=1.5px | 1952640B(1.86MB) |
看见没有,明明都是同一张图片,但在不同场景下,所占用的内