较新版本的Android Studio和只有两个可绘制目录 - drawable和drawable-v21

时间:2015-12-17 20:24:31

标签: android android-layout android-studio drawable

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

有没有理由说Android(以其无限的智慧)不再为您提供单独的存储桶文件夹?

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

1 个答案:

答案 0 :(得分:21)

感谢所有试图提供帮助的人。你帮我找到了最终答案,但没有一个解决方案是正确的。 @ user3137702可能是最接近的,因为它与向量/ SVG的整个移动有关。我无法找到一个确定的答案,比如直接来自谷歌的东西(虽然我想它就在那里),但是从我从一堆文章中收集到的东西,他们可能有这样做的原因。

对于初学者来说,它似乎是从Android Studio 1.4开始的。我现在在1.5。似乎Android正朝着不再需要你为drawables创建自己的密度文件夹(即mdpi,hdpi等)的方向发展(mipmap是不同的,所以请不要把它与我说的话混淆关于)。从Android Studio 1.4开始,它会将您放入常规可绘制文件夹中的SVG(不在v21文件夹中),将它们转换为PNG,并在构建序列期间将它们放置在自动生成的密度文件夹中(因此Gradle对于所有早于API 21的版本,这对你来说都是如此。对于21及更高版本,SVG支持不同,这是一个完整的其他主题。但这实际上使SVG支持向后兼容到API 1 !!!

但是,有一个很大的问题。这种SVG转换并不总是像您希望的那样成功。它仅支持SVG文件的子集,因此根据您保存的方式(即保存时应用的设置),可能无法正确呈现。甚至不支持常用的设置,例如渐变和图案填充,本地IRI引用和转换。如果您正在使用未生成的SVG文件,则可能在导入它们时遇到问题。如果您或与您合作的人直接生成它们,您可能需要尝试保存文件的方式,并且您应该经常在旧版Android上测试构建版本,以确保它按预期结果。

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

  1. 右键单击res / drawable文件夹
  2. 选择"新"
  3. 选择" Vector Asset"
  4. 此时,您可以选择"材质图标",它可以使用 真的很好,有一堆美丽的"免费"你可以的图标 选择。对于独立开发者,没有图标设计支持, 这很好!
  5. 或 - 您可以选择"本地SVG文件"
  6. 然后从&#34选择任一选项中的SVG;选择"选项。警告:如果导入的SVG未正确保存,则可能出现错误。
  7. 点击"下一步"
  8. 确认它保存在正确的位置,然后点击"完成"
  9. 此时,它可以引用:android:icon =" @ drawable / ic_imagename" (当然,使用您的图像名称而不是ic_imagename)
  10. @ CommonsWare的回复对于找到合适的解决方案非常有帮助,但从我看到的,从不同的模板和版本支持设置生成多个新项目的变体,实际上没有任何方法让旧密度文件夹自动生成。这里肯定有更多的内容,而不仅仅是一个不同的模板版本选择。但正如他所说,根据您选择的模板/版本,您最终可能会得到这两种可绘制文件夹类型的不同集合。但具体到我的问题,Android Studio似乎正在强调这种不创建自己的个人可绘制密度文件夹的新方法。

    非常酷,imo,但它仍然需要一些工作。实际上,我可能仍然需要添加可绘制的密度文件夹来支持我使用的所有图像,直到这种机制更加支持所有类型的SVG渲染。

    还有一个小问题 - 因为这都是通过Gradle处理的(密度文件夹的实际生成),您可以通过flavor机制添加构建设置,以限制要生成的密度文件夹。因此,例如,如果您认为mdpi图像已经达到了对您的特定用户群的有用性的结束,并且希望将该大小/密度从应用程序中移除以减少应用程序大小的几MB,则可以将其设置为Gradle构建风味。