顺便说下 倍数计算方式
既然分析到这了,那么再进一步深入吧,图片都放大缩小了,那内存变化又如何呢?
仍然按上面的 运行举例,获得的结果如下:
内存计算方式:
当图片以格式ARGB_8888存储时的计算方式,不同格式乘的字节数不一样,可以看下方色彩模式
占用内存=图片长*图片宽*4字节
图片长 = 图片原始长*(设备DPI/文件夹DPI)
图片宽 = 图片原始宽*(设备DPI/文件夹DPI)
举例验证
图片长宽为300*400,在华为设备480dpi上,xxhdpi,咱把图片放在hdpi下
图片长=(480/240)*300=600
图片款=(480/240)*400=800
占用内存为600*800*4=1920000
再放到xxhdpi下
图片长=(480/480)*300=300
图片款=(480/480)*400=400
占用内存为300*400*4=480000
那么它占用内存为什么是变化的?
Android会先解析图片文件本身的数据格式,然后还原成Bitmap对象,Bitmap的大小就跟上面的计算方式相关联。
再举例1080*452的png图片,图片占用存储空间大小为56kb,内存如图:
上图一目了然,不同状态下,占用内存不一样,想明白这点是很重要的,一个应用可能有上百张图片,小到几B大到几MB,很容易占用大量内存。
所以,对应的设计图,对应的切图