Android Studio 的较新版本和只有两个 drawable 目录 - drawable 和 drawable-v21
Newer versions of Android Studio and only two drawable directory - drawable and drawable-v21
对于旧版本的 Android Studio,默认情况下会创建所有可绘制桶文件夹(即 drawable-mdpi、drawable-hdpi 等)。在较新版本的 Android Studio 中,它仅提供 drawable 和 drawable-v21。这是为什么?
Android(以其无限的智慧)不再为您提供单独的存储桶文件夹是有原因的吗?
请注意,我知道您可以手动添加它们,但我想确保没有任何新的最佳实践理由不再使用这些文件夹。
感谢所有试图提供帮助的人。您帮助我找到了最终答案,但没有一个解决方案是完全正确的。 @user3137702 可能是最接近的,因为它与 vectors/SVGs 的整个迁移有关。我找不到明确的答案,比如直接来自 Google 的东西(尽管我想它就在那里),但从我从一堆文章中收集到的内容来看,他们这样做可能是有原因的.
对于初学者来说,这似乎是从 Android Studio 1.4 开始的。我现在在1.5。 Android 似乎朝着不再需要您为可绘制对象创建自己的密度文件夹(即 mdpi、hdpi 等)的方向发展(mipmaps 不同,所以请不要将其与我的内容混淆我在谈论)。从 Android Studio 1.4 开始,它将获取您放入常规可绘制文件夹(而不是 v21 文件夹)的 SVG,将它们转换为 PNG,并在构建期间将它们放入自动生成的密度文件夹中对于早于 API 21 的所有版本,顺序(因此 Gradle 基本上为您执行此操作)。对于 21 及更高版本,支持不同的 SVG,这是另一个主题。但这实质上使 SVG 支持一直向后兼容 API 1!!!
但是,有一个大收获。这种 SVG 转换并不总是像您希望的那样成功。它只支持 SVG 文件的一个子集,因此根据您保存它的方式(即保存时应用的设置),它可能无法正确呈现。甚至不支持常用设置,例如渐变和图案填充、本地 IRI 参考和转换(目前)。如果您使用的 SVG 文件不是您生成的,则导入它们时可能会遇到问题。如果您或与您一起工作的人直接生成它们,您可能需要尝试保存文件的方式,并且您应该经常在 Android 的旧版本上测试构建以确保结果如预期。
要将 SVG 导入 Android Studio 1.4+,请按照以下简单步骤操作:
- 右键单击 res/drawable 文件夹
- Select "New"
- Select "Vector Asset"
- 此时,你可以select一个"Material Icon",这样就可以了
真的很好,还有很多漂亮的 "free" 图标你可以
select 来自。对于没有图标设计支持的独立开发者,
这很好!
- 或者 - 你可以 select "Local SVG File"
- 然后使用 "choose" 选项从任一选项中选择一个 SVG。警告:如果您导入的 SVG 未正确保存,这可能会出错。
- 命中"Next"
- 确认保存在正确的位置,然后单击 "Finish"
- 此时,它可以参考:android:icon="@drawable/ic_imagename"(当然,使用您的图像名称而不是 ic_imagename)
@CommonsWare 的回复对找到正确的解决方案很有帮助,但据我所知,从不同的模板和版本支持设置生成了新项目的多个变体,没有任何方法可以实际拥有旧的密度文件夹会自动生成。这里肯定有更多的事情发生,而不仅仅是一个不同的模板版本 selection。但正如他所说,取决于 template/version 你 select,你最终可能会得到一组不同的这两种可绘制文件夹类型。但具体到我的问题,Android Studio 似乎确实强调了这种根本不创建您自己的个人可绘制密度文件夹的新方法。
这很酷,imo,但它仍然需要一些工作。实际上,我可能仍需要添加可绘制密度文件夹以支持我使用的所有图像,直到此机制对所有类型的 SVG 渲染提供更多支持为止。
还有一个花絮 - 因为这都是通过 Gradle(密度文件夹的实际生成)处理的,所以您可以通过风味机制添加构建设置以限制要生成的密度文件夹。因此,例如,如果您觉得 mdpi 图像对您的特定用户群已经没有用处,并且想将 size/density 留在您的应用程序之外以将应用程序大小减少几 MB,您可以设置Gradle 构建风味。
对于旧版本的 Android Studio,默认情况下会创建所有可绘制桶文件夹(即 drawable-mdpi、drawable-hdpi 等)。在较新版本的 Android Studio 中,它仅提供 drawable 和 drawable-v21。这是为什么?
Android(以其无限的智慧)不再为您提供单独的存储桶文件夹是有原因的吗?
请注意,我知道您可以手动添加它们,但我想确保没有任何新的最佳实践理由不再使用这些文件夹。
感谢所有试图提供帮助的人。您帮助我找到了最终答案,但没有一个解决方案是完全正确的。 @user3137702 可能是最接近的,因为它与 vectors/SVGs 的整个迁移有关。我找不到明确的答案,比如直接来自 Google 的东西(尽管我想它就在那里),但从我从一堆文章中收集到的内容来看,他们这样做可能是有原因的.
对于初学者来说,这似乎是从 Android Studio 1.4 开始的。我现在在1.5。 Android 似乎朝着不再需要您为可绘制对象创建自己的密度文件夹(即 mdpi、hdpi 等)的方向发展(mipmaps 不同,所以请不要将其与我的内容混淆我在谈论)。从 Android Studio 1.4 开始,它将获取您放入常规可绘制文件夹(而不是 v21 文件夹)的 SVG,将它们转换为 PNG,并在构建期间将它们放入自动生成的密度文件夹中对于早于 API 21 的所有版本,顺序(因此 Gradle 基本上为您执行此操作)。对于 21 及更高版本,支持不同的 SVG,这是另一个主题。但这实质上使 SVG 支持一直向后兼容 API 1!!!
但是,有一个大收获。这种 SVG 转换并不总是像您希望的那样成功。它只支持 SVG 文件的一个子集,因此根据您保存它的方式(即保存时应用的设置),它可能无法正确呈现。甚至不支持常用设置,例如渐变和图案填充、本地 IRI 参考和转换(目前)。如果您使用的 SVG 文件不是您生成的,则导入它们时可能会遇到问题。如果您或与您一起工作的人直接生成它们,您可能需要尝试保存文件的方式,并且您应该经常在 Android 的旧版本上测试构建以确保结果如预期。
要将 SVG 导入 Android Studio 1.4+,请按照以下简单步骤操作:
- 右键单击 res/drawable 文件夹
- Select "New"
- Select "Vector Asset"
- 此时,你可以select一个"Material Icon",这样就可以了 真的很好,还有很多漂亮的 "free" 图标你可以 select 来自。对于没有图标设计支持的独立开发者, 这很好!
- 或者 - 你可以 select "Local SVG File"
- 然后使用 "choose" 选项从任一选项中选择一个 SVG。警告:如果您导入的 SVG 未正确保存,这可能会出错。
- 命中"Next"
- 确认保存在正确的位置,然后单击 "Finish"
- 此时,它可以参考:android:icon="@drawable/ic_imagename"(当然,使用您的图像名称而不是 ic_imagename)
@CommonsWare 的回复对找到正确的解决方案很有帮助,但据我所知,从不同的模板和版本支持设置生成了新项目的多个变体,没有任何方法可以实际拥有旧的密度文件夹会自动生成。这里肯定有更多的事情发生,而不仅仅是一个不同的模板版本 selection。但正如他所说,取决于 template/version 你 select,你最终可能会得到一组不同的这两种可绘制文件夹类型。但具体到我的问题,Android Studio 似乎确实强调了这种根本不创建您自己的个人可绘制密度文件夹的新方法。
这很酷,imo,但它仍然需要一些工作。实际上,我可能仍需要添加可绘制密度文件夹以支持我使用的所有图像,直到此机制对所有类型的 SVG 渲染提供更多支持为止。
还有一个花絮 - 因为这都是通过 Gradle(密度文件夹的实际生成)处理的,所以您可以通过风味机制添加构建设置以限制要生成的密度文件夹。因此,例如,如果您觉得 mdpi 图像对您的特定用户群已经没有用处,并且想将 size/density 留在您的应用程序之外以将应用程序大小减少几 MB,您可以设置Gradle 构建风味。