较新版本的 Android Studio 仅添加了两个可绘制目录 - 可绘制和可绘制-v21

2024-05-12

对于旧版本的 Android Studio,所有可绘制存储桶文件夹都是默认创建的(即可绘制-mdpi、可绘制-hdpi 等)。在较新版本的Android Studio中,它仅提供drawable和drawable-v21。这是为什么?

Android(以其无限的智慧)不再为您提供单独的存储桶文件夹是有原因的吗?

请注意,我知道您可以手动添加它们,但我想确保没有任何新的最佳实践理由不再使用这些文件夹。


感谢所有试图提供帮助的人。您帮助我找到了最终答案,但没有一个解决方案是完全正确的。 @user3137702 可能是最接近的,因为它与向矢量/SVG 的整个迁移有关。我找不到明确的答案,就像直接来自谷歌的东西一样(尽管我想象它就在那里),但从我从一堆文章中收集到的信息来看,他们这样做可能是有原因的。

对于初学者来说,这似乎是从 Android Studio 1.4 开始的。我现在是1.5。看来 Android 正在朝着不再需要您为可绘制对象创建自己的密度文件夹(即 mdpi、hdpi 等)的方向发展(mipmap 是不同的,所以请不要将其与我所说的混淆) 。从 Android Studio 1.4 开始,它将获取您放入常规可绘制文件夹(而不是 v21 文件夹)中的 SVG,将它们转换为 PNG,并在构建过程中将它们放入自动生成的密度文件夹中(因此 Gradle基本上,对于所有早于 API 21 的版本,都会为您执行此操作。对于 21 及更高版本,SVG 支持不同,这是一个完全不同的主题。但这本质上使得 SVG 支持向后兼容 API 1!

然而,有一个很大的问题。这种 SVG 转换并不总是像您希望的那样成功。它仅支持 SVG 文件的子集,因此根据保存方式(即保存时应用的设置),它可能无法正确渲染。即使是常用的设置,例如渐变和图案填充、本地 IRI 参考和转换也不支持(尚)。如果您使用的 SVG 文件不是您生成的,则导入它们时可能会遇到问题。如果您或您的同事直接生成它们,您可能需要尝试如何保存文件,并且您应该经常在旧版本的 Android 上测试构建,以确保其结果符合预期。

要将 SVG 导入 Android Studio 1.4+,请按照以下简单步骤操作:

  1. 右键单击 res/drawable 文件夹
  2. 选择“新建”
  3. 选择“矢量资源”
  4. 此时,你可以选择一个“材质图标”,就可以了 非常好,并且有一堆漂亮的“免费”图标你可以 从中选择。对于独立开发者来说,在没有图标设计支持的情况下, 这很好!
  5. 或者 - 您可以选择“本地 SVG 文件”
  6. 然后使用“选择”选项从任一选项中选择一个 SVG。警告:如果您导入的 SVG 未正确保存,这可能会出错。
  7. 点击“下一步”
  8. 验证它是否保存在正确的位置,然后单击“完成”
  9. 此时,它可以通过以下方式引用: android:icon="@drawable/ic_imagename" (当然,使用您的图像名称而不是 ic_imagename)

@CommonsWare 的响应对于找到正确的解决方案非常有帮助,但从我所看到的情况来看,从不同的模板和版本支持设置生成新项目的多个变体,没有任何方法可以真正自动生成旧的密度文件夹。这里肯定发生了更多事情,而不仅仅是不同的模板版本选择。但正如他所说,根据您选择的模板/版本,您最终可能会得到这两种可绘制文件夹类型的不同集合。但具体到我的问题,Android Studio 似乎确实强调了这种新方法,即根本不创建自己的单独的可绘制密度文件夹。

在我看来,这很酷,但仍然需要一些工作。实际上,我可能仍然需要添加可绘制密度文件夹来支持我使用的所有图像,直到此机制对所有类型的 SVG 渲染提供更多支持。

还有一点 - 因为这一切都是通过 Gradle(密度文件夹的实际生成)处理的,所以您可以通过风味机制添加构建设置,以限制要生成的密度文件夹。因此,例如,如果您认为 mdpi 图像对于您的特定用户群已经不再有用,并且希望在您的应用程序中保留该尺寸/密度以减少应用程序大小几 MB,您可以将其设置为Gradle 构建风味。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

较新版本的 Android Studio 仅添加了两个可绘制目录 - 可绘制和可绘制-v21 的相关文章

随机推荐