我首先想到 Vector assets 的目的是,它使我们能够在不影响图像质量的情况下放大/缩小。
如果是这样,我可以知道为什么我们在 Android Studio 中生成矢量图像时需要指定大小吗?
我倾向于生成 2 种不同大小的 Vector。
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:width
和 android:height
参数外,内容看起来一样。
最佳答案
我无法给你一个完整的解释,但这是我的想法。
一些图像容器确实依赖于可绘制对象的大小来正确绘制图像。他们不能使用 viewportHeight
和 viewportWidth
,所以他们寻找的是 width
和 height
。
在我的例子中,当在 GoogleMap
上加载一个 Marker
时,我无法以编程方式更改标记的大小。 map 使用可绘制对象的确切大小作为标记的大小。当我使用 VectorDrawable
作为标记时,我必须将 width
和 height
修改为我想要的标记大小。
GoogleMap Marker
是我所说的图像容器,它始终需要准确的源大小。
关于android - 为什么我们在 Android Studio 中生成矢量图像时需要指定大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50217320/