利用android studio,对图片资源进行二次压缩
发现最近的项目对图片资源有做额外的压缩,不是直接使用png图片。具体有两种
方式一:导出成svg
- figma中,选中图片,点Export,选择1x svg
- 在drawable中,右键 new -> Vector Asset -> 选中步骤1导出的svg资源
- 资源会被自动处理成xml,放入项目中
方式二:基于PNG图片压缩
- 把资源放到 drawable的特定目录下
- 右键 -> convert to webp…
- 默认quality -> 选择最高压缩比(或者选肉眼看起来效果还好的图片)
兼容性
- WebP兼容性
WebP是一种由Google开发的图片格式,它支持有损压缩和无损压缩,并且可以包含透明度(Alpha通道)。在Android中,WebP的兼容性如下:
- Android 4.0(API 14)及以上:支持不包含透明度的WebP图片(即不带Alpha通道)。
- Android 4.3(API 18)及以上:支持包含透明度的WebP图片(即带Alpha通道)。
因此,如果你的应用的最低支持版本(minSdkVersion)是API 18或以上,那么你可以安全地使用带透明度的WebP图片。如果最低支持版本是API 14到API 17,则只能使用不带透明度的WebP图片。对于低于API 14的版本,则无法使用WebP格式。
- Vector Asset(矢量图)兼容性
Vector Asset是Android中的矢量图资源,通常使用SVG格式转换而来,在Android中是以XML格式存储的矢量图(VectorDrawable)。矢量图的优势在于可以无损缩放,减少资源文件大小,并且适配不同屏幕密度。
- Android 5.0(API 21)及以上:原生支持VectorDrawable。
- Android 4.4(API 20)及以下:不支持VectorDrawable。
但是,从Android Support Library 23.2.0开始,支持库提供了VectorDrawableCompat和AnimatedVectorDrawableCompat,使得在Android 4.0(API 14)及以上版本中可以使用矢量图。
因此,通过使用支持库,你可以在minSdkVersion为API 14及以上的应用中使用矢量图。
使用建议
对于WebP:
- 如果你的应用minSdkVersion >= 18,可以自由使用带或不带透明度的WebP图片。
- 如果minSdkVersion >= 14但<18,则只能使用不带透明度的WebP图片。
- 如果minSdkVersion <14,则不能使用WebP。
对于Vector Asset:
- 如果你的应用minSdkVersion >= 21,可以直接使用矢量图,无需额外配置。
- 如果minSdkVersion在14到20之间,你需要使用支持库(现在通常是AndroidX库)来兼容矢量图。
小结
格式 | 最低支持版本 | 兼容方案 | 推荐场景 |
---|---|---|---|
WebP | API 14(静态) | 低于 API 18 时避免动图/透明 | 替代 PNG/JPG,减小资源体积 |
Vector Asset | API 14(通过支持库) | 使用 appcompat + app:srcCompat | 单一资源适配多分辨率,减少 APK 大小 |
- 优先使用 Vector Asset:适配性强,减少 APK 体积,尤其适合图标/简单图形。
- 复杂图片用 WebP:替代 PNG 节省资源,但需注意低版本兼容性。