6

首先

我注意到在 Android Studio 中创建一个新项目时,它会生成drawable-v24带有ic_launcher_foreground.xml图标的文件夹。

我的问题是:

  1. 如果在 v24 之前引入了矢量 drawable,那么为什么将矢量资源放在文件夹中drawable-v24而不是drawable-v21文件夹中?

第二

另一个生成的资产是ic_launcher_background.xmlres/drawable文件夹中创建的,后来从mipmap-anydpi-v26/ic_launcher.xml.

  1. 如果它仅用于 API v26+(自适应图标),那么为什么它是在res/drawable文件夹中创建的,而不是在文件夹中创建res/drawable-v24res/drawable-v26?是由于 mipmap 文件夹的某些性质造成的吗?
4

2 回答 2

1

VectorDrawable功能在某种程度上集成在 API-24 中,尽管它是从 API-21 引入的我认为 Google 的开发人员认为 API-24+ 对于自适应图标来说是理想的或稳定的。

例如,Nick Butcher(Android 设计师+开发者@Google)在他的文章:Using vector assets in Android apps (Dec 11, 2018) 中说,

  • nonZero 和 evenOdd 路径 fillTypes — 定义形状内部的两种常用方法,常用于 SVG(在 API 24 中将 evenOdd 添加到平台实现中)
  • Gradient & ColorStateList 填充/描边(在 API 24 中添加到平台实现)

而关于,它仅被和ic_launcher_background引用。我认为只是没有必要阻止直接引用它(它已经通过放置和在文件夹中阻止了)。不应该有更深的意义。mipmap-anydpi-v26/ic_launcher.xmlmipmap-anydpi-v26/ic_launcher_round.xmlic_launcher.xmlic_launcher_round.xmlmipmap-anydpi-v26

于 2020-05-15T08:04:12.873 回答
0

Codelab 会回答您的问题。

根据您应用的最小 SDK,您可能会注意到前景资源位于 drawable-v24 文件夹中,而背景资源位于 drawable 文件夹中。原因是前景资源包含渐变,从 Android 7.0 版本开始就可以使用(也称为 API 版本 24,因此是 -v24 资源限定符)。背景资源不包含渐变,因此可以放在基本可绘制文件夹中。

附带说明一下,虽然我们通常不会将ic_launcher_background.xml其用于应用程序图标以外的任何用途,但它只是一个矢量可绘制对象,其用途不受限制。

于 2021-03-01T14:57:37.750 回答