为什么在Android Studio中生成矢量图像时需要指定大小?

6

我最初认为矢量资源的目的是,它使我们能够在不妥协图像质量的情况下进行缩放。

如果是这样的话,我想知道为什么在Android Studio中生成矢量图像时需要指定大小?

enter image description here

我倾向于生成两种不同尺寸的向量。

24x24

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportHeight="24.0"
    android:viewportWidth="24.0">
    <path
        android:fillColor="#FF000000"
        android:pathData="M19,2h-4.18C14.4,0.84 13.3,0 12,0c-1.3,0 -2.4,0.84 -2.82,2L5,2c-1.1,0 -2,0.9 -2,2v16c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,4c0,-1.1 -0.9,-2 -2,-2zM12,2c0.55,0 1,0.45 1,1s-0.45,1 -1,1 -1,-0.45 -1,-1 0.45,-1 1,-1zM19,20L5,20L5,4h2v3h10L17,4h2v16z"/>
</vector>

96x96

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="96dp"
    android:height="96dp"
    android:viewportHeight="24.0"
    android:viewportWidth="24.0">
    <path
        android:fillColor="#FF000000"
        android:pathData="M19,2h-4.18C14.4,0.84 13.3,0 12,0c-1.3,0 -2.4,0.84 -2.82,2L5,2c-1.1,0 -2,0.9 -2,2v16c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,4c0,-1.1 -0.9,-2 -2,-2zM12,2c0.55,0 1,0.45 1,1s-0.45,1 -1,1 -1,-0.45 -1,-1 0.45,-1 1,-1zM19,20L5,20L5,4h2v3h10L17,4h2v16z"/>
</vector>

除了 android:widthandroid:height 参数之外,内容看起来都是相同的。
1个回答

2

我无法给你一个完整的解释,但是这是我所想的。

有些图像容器确实依赖于可绘制对象的大小来正确绘制图像。它们不能使用viewportHeightviewportWidth,所以它们需要寻找widthheight

在我的情况下,当在GoogleMap上加载Marker时,我无法通过编程更改标记的大小。地图使用可绘制对象的确切大小作为标记的大小。当我使用VectorDrawable作为标记时,我必须将widthheight修改为所需的标记大小。

GoogleMap Marker就是我说的那个总是需要确切源大小的图像容器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接