Android修行手册-基础优化系列图片篇(1),2024Android最新大厂面试真题总结

本文探讨了Android中图片的几种形式,包括File、Stream和Bitmap,详细解释了像素密度和色彩模式对内存占用的影响。重点介绍了质量压缩和尺寸压缩的区别及应用场景,并推荐了TinyPNG网站进行图片压缩。此外,还分享了避免OOM的BitmapFactory.Options.inSampleSize使用技巧,以及处理大图的BitmapRegionDecoder。最后,作者分享了自己的职业经历和Android开发学习资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

image.png

顺便说下 倍数计算方式

image.png

既然分析到这了,那么再进一步深入吧,图片都放大缩小了,那内存变化又如何呢?

仍然按上面的 运行举例,获得的结果如下:

image.png

内存计算方式:

image.png

当图片以格式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,内存如图:

image.png

上图一目了然,不同状态下,占用内存不一样,想明白这点是很重要的,一个应用可能有上百张图片,小到几B大到几MB,很容易占用大量内存。

所以,对应的设计图,对应的切图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值