场景
在一些上古工程中,由于年久失修,架构演进跟不上业务发展需要,会衍生出非常多比较明显的性能问题,其中就包括工程中图片资源的问题。
最明显的例子就是,工程中的图片资源未经任何压缩,直接使用来自设计稿中的原图,非常占用安装包体积;其次,显示效果不理想,在对应分辨率的图片资源文件夹中放入了错误尺寸的图片,导致应用运行时 UI 图片出现模糊、大颗粒等情况。
优化方案
压缩图片资源文件夹的大小
优化工作往往要从业务入手,在业务发展方向明确的前提下,并不是所有的 UI 效果都需要用图片文件的方式进行显示,对于一些简单的 UI,可以考虑使用代码进行绘制。使用代码绘制可以极其明显的减少图片对硬件资源的占用,一来可以减小包体积,二来通常可以减小运行时的内存。
对于一些必须需要通过图片文件来实现的 UI 效果,也需要对图片文件进行相应的压缩后再放入对应分辨率的文件夹,可以考虑无损压缩和有损压缩。
这里重点提下有损压缩,并不是所有的有损压缩都会直接影响 UI 呈现的,如果事先获知应用所运行的设备屏幕硬件本身色彩还原度很差,尺寸较小,分辨率也较低,那么有损压缩往往是更具性价比的选择。
注意这里的压缩不单单指图片质量的压缩,同时也包括图片尺寸的缩放。对于一些特定设备屏幕尺寸,我们可以限定一个最大的图片尺寸作为约束。
检查对应分辨率资源文件夹下的图片
种种原因下,代码工程中往往会存在对于分辨率资源文件夹下放错图片资源的情况。
比如,在 drawable-xxhdpi 下放入了本应该放在 drawable-mdpi 的图片资源,那么最终的 UI 呈现就可能会出现模糊、大颗粒、锯齿感等情况。