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

Che*_*eng 6 android

我首先想到的是Vector资产的目的是,它使我们能够在不影响图像质量的情况下进行放大/缩小.

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

在此输入图像描述

我倾向于生成2种不同大小的Vector.

24×24

<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>
Run Code Online (Sandbox Code Playgroud)

96×96

<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>
Run Code Online (Sandbox Code Playgroud)

除了android:widthandroid:height参数外,内容看起来相同.

Tam*_*ynh 2

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

一些图像容器实际上依赖于可绘制对象的大小来正确绘制图像。他们无法使用viewportHeightviewportWidth,因此widthheight就是他们所寻找的。

就我而言,当加载Markeron时GoogleMap,我无法以编程方式更改标记的大小。地图使用可绘制的确切大小作为标记的大小。当我使用VectorDrawablefor 标记时,我必须将width和修改height为我想要的标记大小。

GoogleMap Marker我所说的是图像容器,它始终需要确切的源大小。