Android矢量资产:dp测量仅适用于"包装内容"?

时间:2017-08-27 01:03:08

标签: android vector

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

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

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

  3. 这些测量对我的用途是否重要,除了在我申请wrap_content时只是默认尺寸?

2 个答案:

答案 0 :(得分:1)

我可能无法解答您的所有问题,但如果您没有通过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可以在这里找到:

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

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

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

答案 1 :(得分:0)

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