最近开发的android 应用上架小米的时候总是报out of memory 错误, 仔细review了N多遍代码,并没有发现那里不妥的地方, 而且自己使用过程中也没有崩溃过. 于是使用moniter 监测了一下内存, 发现图片占用了很大内存空间.
之前写代码都是设计直接给图,然后将图放到对应目录下, 没怎么研究过图片尺寸的问题, 这次没有专业设计师协助, 都是统一搞一张大图放到mipmap中.
经过这次的问题, 详细学习了android中尺寸相关内容, 内容如下两篇参考文献:
Android-分辨率以及dip(dp)、dpi、ppi、px、sp、pt说明
Android开发中dip,dpi,density,px等详解
在以上学习基础上, 使用python 的pillow库写了一个切图的工具, 有两个功能:
- icon切割, 切割正方形图片,根据Android设计规范将图标切割
iconDirs = ["mipmap-ldpi","mipmap-mdpi","mipmap-hdpi","mipmap-xhdpi","mipmap-xxhdpi","mipmap-xxxhdpi"]
iconSizes = [36, 48, 72, 96, 144, 192]
1.1 ios 图标切割, 根据ios设计规范切割图片
- 根据dip 修改图片大小
实现原理根据不同dpi对应的数值,使用公式px = dip * dpi / 160
;
imgDirs = ["mipmap-ldpi", "mipmap-mdpi", "mipmap-hdpi", "mipmap-xhdpi", "mipmap-xxhdpi", "mipmap-xxxhdpi"]
imgDpis = [120, 160, 240, 320, 480, 640]
附件: 详细代码