当前位置: 首页 > news >正文

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

发现最近的项目对图片资源有做额外的压缩,不是直接使用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库)来兼容矢量图。

小结

格式最低支持版本兼容方案推荐场景
WebPAPI 14(静态)低于 API 18 时避免动图/透明替代 PNG/JPG,减小资源体积
Vector AssetAPI 14(通过支持库)使用 appcompat + app:srcCompat单一资源适配多分辨率,减少 APK 大小
  • 优先使用 Vector Asset:适配性强,减少 APK 体积,尤其适合图标/简单图形。
  • 复杂图片用 WebP:替代 PNG 节省资源,但需注意低版本兼容性。
http://www.lryc.cn/news/588659.html

相关文章:

  • 网络编程-epoll模型/udp通信
  • Node.js 中http 和 http/2 是两个不同模块对比
  • AutoGPT vs BabyAGI:自主任务执行框架对比与选型深度分析
  • python的形成性考核管理系统
  • 1.easypan-登录注册
  • P3842 [TJOI2007] 线段
  • 基于多智能体强化学习的医疗检索增强生成系统研究—MMOA-RAG架构设计与实现
  • 编程技能:多文件编译
  • c++图形题练习程序
  • LVS三种模式实战
  • 图机器学习(6)——图自编码器
  • 【电脑】显卡(GPU)的基础知识
  • 【轨物方案】当补贴退潮,光伏电站如何回归价值本质?
  • MySQL数据库----函数
  • 【PTA数据结构 | C语言版】二叉树前序序列化
  • 跨平台游戏引擎 Axmol-2.7.1 发布
  • git起步
  • 微信小程序翻书效果
  • 《汇编语言:基于X86处理器》第8章 高级过程(1)
  • 基于UDP/IP网络游戏加速高级拥塞控制算法(示意:一)
  • 力扣-使用双指针的方法的题们(持续更新中。。。
  • 一、CV_图像分类简介
  • Typecho插件开发:优化文章摘要处理短代码问题
  • 基于redis的分布式锁 lua脚本解决原子性
  • 银河麒麟服务器版挂载镜像文件
  • sqli-labs靶场通关笔记:第18-19关 HTTP头部注入
  • exe直接传输会导致文件损坏
  • 【html常见页面布局】
  • AI应用服务
  • Axios 完整功能介绍和完整示例演示