首页 > 解决方案 > 如何为android中的自适应图标格式化/调整VectorDrawable的大小

问题描述

我正在尝试为使用两个 VectorDrawables 作为背景和前景的应用程序创建一个自适应图标。但是,从 Illustrator 中制作的 svg 创建的前景矢量无法调整大小或正确放置在图标中。

供将来参考的前景矢量

供将来参考的前景矢量

我根据 Adaptive icon Guidelines中的规范将矢量 viewportheight 和 viewportwidth 设置为 108dp x 108dp ,但这只会导致前景偏移。

<vector android:height="108dp" android:viewportHeight="108"
    android:viewportWidth="108" android:width="108dp"
    xmlns:aapt="http://schemas.android.com/aapt" xmlns:android="http://schemas.android.com/apk/res/android">

    ...

</vector>

结果

但是,当 viewportheight 和 viewportwidth 设置为较小的值(例如 50)时,矢量出现在正确的位置但太大了。

<vector android:height="108dp" android:viewportHeight="50"
    android:viewportWidth="50" android:width="108dp"
    xmlns:aapt="http://schemas.android.com/aapt" xmlns:android="http://schemas.android.com/apk/res/android">

    ...

</vector>

结果

我是使用 android 的新手,所以我不确定还有哪些其他因素可能导致这种情况。还有另一个类似的问题,但是没有解决抵消效应的原因。

标签: androidandroid-vectordrawableadaptive-icon

解决方案


为了最小化我的应用程序大小,我尝试对通知和图标使用相同的向量并遇到完全相同的问题。

我尝试了“向导”:

  • 右键单击 res 文件夹,然后单击新建 > 图像资源

然后,这让我可以在背景向量之上缩放我的向量,但居中

查看生成的图标矢量文件,它将我的矢量路径嵌套在具有 translateX 和 translateY 属性的组标记中,如下所示:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="52.173912"
android:viewportHeight="52.173912">

<group android:translateX="14.086957"
  android:translateY="14.086957">

    <path.../>

  </group>
</vector>

如果您想避免生成文件并在之后删除生成的 png 文件等,请直接在您的 xml 中尝试。


这可能对你有用——在我的情况下,我不能使用新的图标前景向量作为通知,因为它太小了。所以我似乎需要不同大小的可缩放矢量图形的副本!

如果我们可以在自适应图标文件本身中缩放自适应图标的前景/背景部分,那将是理想的 - 也许有人已经知道如何做到这一点?


推荐阅读