利用android studio,对图片资源进行二次压缩

发布于:2025-07-17 ⋅ 阅读:(18) ⋅ 点赞:(0)

发现最近的项目对图片资源有做额外的压缩,不是直接使用png图片。具体有两种

方式一:导出成svg

  1. figma中,选中图片,点Export,选择1x svg
  2. 在drawable中,右键 new -> Vector Asset -> 选中步骤1导出的svg资源
  3. 资源会被自动处理成xml,放入项目中

方式二:基于PNG图片压缩

  1. 把资源放到 drawable的特定目录下
  2. 右键 -> convert to webp…
  3. 默认quality -> 选择最高压缩比(或者选肉眼看起来效果还好的图片)

兼容性

  1. 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格式。

  1. 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 节省资源,但需注意低版本兼容性。

网站公告

今日签到

点亮在社区的每一天
去签到