Android Vector资产:dp测量只对“包装内容”有影响吗?

当我创建一个矢量drawable时,我可以用dp设置它的大小。 默认值为24dp x 24dp。

  1. 如果我在我的应用程序中使用不同于24dp x 24dp的矢量,那么这些测量在性能方面是否重要? 另外关于21岁以下的API(我使用app:srcCompat来显示图像)。

  2. 当使用较低的API并且系统将其缩小时,矢量大小是否重要?

  3. 这些测量对我的使用是否重要,除了在我应用wrap_content时只是默认大小?

我可能无法回答您的所有问题,但如果您没有通过Lollipop前版本的支持库使用矢量绘图,则DP尺寸非常重要。

要启用支持向量drawable,您必须将以下内容添加到应用程序的gradle构建文件中:

 android { defaultConfig { vectorDrawables.useSupportLibrary = true } } 

请参阅https://android-developers.googleblog.com/2016/02/android-support-library-232.html

如果这不是应用程序构建文件的一部分,Android Studio将为所有具有已定义DP大小的Lollipop前版本生成PNG。 因此,如果你的矢量定义了24dp并且你将它用作128dp图形,那么在Lollipop之前的版本中它很可能看起来不太好,因为将使用24dp PNG。

生成的PNG可以在这里find:

 app\build\generated\res\pngs\... 

另外,如果你的矢量是128dp并且你将它用作24dp图形,缩小的PNG图形也可能看起来不像预期那样完美,因为缩放并且你可能由于PNG太大而浪费了一些文件大小。

我从未真正看过这对表演的意义……

  1. 当您使用wrap_content ,设备将以您想要的大小(24dp)渲染矢量。 设置更大的大小将导致渲染更大的位图,这会影响您的UI和性能。 如果您没有使用包装内容并且您正在使用支持库来处理向量,那么向量大小应该无关紧要。
  2. 如果你设置了vectorDrawables.useSupportLibrary = false ,那么你的apk还将包含生成的用于API 21的设备的向量位图。更大的位图需要更多的时间来打开,使用更多的内存并且还增加了你的apk的大小。 如果您使用的UI大小超过UI所需的大小(系统会将其缩小),它也会影响性能并可能降低图像质量。
  3. 回答#1,当你不使用wrap_content ,如果你使用vectorDrawables.useSupportLibrary = true ,大小应该无关紧要