drawable图片资源处理

结论:图片资源尽量放在高密度的文件夹下,这样可以节省图片的内存开支,而UI在设计图片的时候也应该尽量面向高密度的设备来进行设计。

在开发过程当中,当项目越来越大,有的时候加载一张hdpi下的图片程序会直接出现OOM奔溃了,但如果将这张图片放到xhdpi或者xxhdpi目录下就不会奔溃了,其实就是这个道理。

我们知道在Android目录下有6个存放图片的文件夹,分别是:ldpi , mdpi , hdpi , xhdpi , xxhdpi , xxxhdpi 。当我们使用资源id来去引用图片时,Android会使用一些规则去帮我们匹配最适合的图片。什么事最合适的图片?比如我们的手机是xxhdpi,那么drawable-xxhdpi文件夹下的图片就是最合适的图片。如果此时程序引用的图片这里有的话,被使用的图片既不会放大,也不会缩小。但是如果xxhdpi没有这张图片的时候,系统就会去查找其他文件夹中的文件了。查找的规则是:优先找更高密度的文件夹中的这张图片,当前场景就是xxxhdpi,但如果这个文件中也没有这张图片的话,有没有更高密度的文件夹了,这个时候就会去查找nodpi文件夹,如果还是发现没有的话,就会去更低文件夹中找,直到ldpi。

整个过程:xxhdpi -> xxxhdpi -> nodpi -> xhdpi -> hdpi -> mdpi-> ldpi

但是如果我们的设备是xxhdpi ,这时我们在mdpi文件夹中找到这个文件,系统会认为这种图片时为低密度的设备所设计的,如果直接将这种图片放到高密度设备的时候有可能会将这张图片放大,同样的道理,如果在更高的密度的文件夹中找到这张图片的话,图片会缩小。

我们此时可以评估一下,一张图片缩小以后显示并没有什么副作用,但是一张图片放大了就意味着要占用更多的内存。

问题:为什么不放更高密度xxxhdpi呢?这是因为xxxhdpi的设备太少了,如果针对这种级别的屏幕密度来设计图片,图片在不压缩的情况下本身就已经很大了,基本也起不到节省内存开支的作用了。

出处:http://blog.csdn.net/guolin_blog/article/details/50727753

发布了36 篇原创文章 · 获赞 19 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/j18874964028sss/article/details/74852611
今日推荐