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

标签 android

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

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

enter image description here

我倾向于生成 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:widthandroid:height 参数外,内容看起来一样。

最佳答案

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

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

在我的例子中,当在 GoogleMap 上加载一个 Marker 时,我无法以编程方式更改标记的大小。 map 使用可绘制对象的确切大小作为标记的大小。当我使用 VectorDrawable 作为标记时,我必须将 widthheight 修改为我想要的标记大小。

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

关于android - 为什么我们在 Android Studio 中生成矢量图像时需要指定大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50217320/

相关文章:

java - Android 2.3 无法在未调用 Looper.prepare() (AsyncTask) 的线程内创建处理程序

android - Unity游戏无法上网

安卓 M : Effect of Selective Permissions on Ads

java - 为什么包含的库项目会更改我的 Android 应用程序的标题?

java.lang.IllegalStateException : Failed to add the track to the muxer

android - Android 中带有 JSON 的 ExpandableListView - 列表错误

Android - 如何从文档中获取选定的文件名

android - CursorIndexOutOfBoundsException 错误

android - Fresco 未使用来自网络的图像更新磁盘缓存

android - 使用 adb 启动 Intent 打开完整对话框