我是靠谱客的博主 无奈美女,最近开发中收集的这篇文章主要介绍android jpg png内存,Android Res图片内存占用的一个坑和处理方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

众所周知... 平时咱们Android手机显示图片的时候,会自动根据当前屏幕DPI(mdpi、hdpi 、xhdpi、xxhdpi )来匹配图片,如果当前DPI对应的文件夹下没有该图片这会去临近DPI下去查找。这就有可能会导致我们今天要讲的主角,图片占用内存过大。

小伙伴可能会觉得开玩笑吧? 图片大小不是天生定好了的吗?

比如1000*1000像素的照片,默认设置(ARGB_8888)全部加载入内存则需要4m的内存,这是理想情况下,那不理想是什么状态呢?

比如手机分辨率是1080p 那么对应的就是xxhdip,那么如果这个时候指定的图片在mdpi,那么内存占用会是怎样的呢?(运行设备分辨率 1080p)

PS:以下测试为了准确性,只显示了一张图片且没有其他任何操作(所有测试均采用同一张图片)

b48adef1b28f

mdpi.png

b48adef1b28f

hdpi.png

b48adef1b28f

xhdip.png

b48adef1b28f

xxhdpi.png

相同的图片,放在不同的文件夹下,所占内存截然不同

例如xxdpi的设备 使用mdpi文件夹下的图片,系统会自动将mdpi下的图片长宽自动放大三倍,也就是说面积放大了9倍,导致的后果就是:内存占用也是没拉伸放大之前的9倍;

为什么是三倍呢? mdpi是160dpi,xhdpi是320dpi,xxdpi是480dpi。接下来的就很好理解了吧?

可是大家可能看上图感觉...最大差距没有9倍啊, 因为作者将图片放在了mipmap中,而用mipmap系统会在缩放上提供一定的性能优化。

为了证明这个观点我们尝试删除了mipmap中的图片,将图片放置在drawable文件夹中

b48adef1b28f

drawable.png

因为图片在drawable文件夹下是没有缩放优化的,放在drawable默认就是mdpi,so...内存占用大的惊人...

总结:

1.需要的图片尽可能的覆盖多DPI,以达到较为良好的内存占用;

2.如果提供的图片尺寸有限,尽可能的有一套高DPI下的图片,因为向下收缩所占的内存远小于放大所占的内存

最后

以上就是无奈美女为你收集整理的android jpg png内存,Android Res图片内存占用的一个坑和处理方法的全部内容,希望文章能够帮你解决android jpg png内存,Android Res图片内存占用的一个坑和处理方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部