如何为Android自适应图标格式化/调整大小的VectorDrawable

4
我正在尝试使用两个VectorDrawables来创建一个自适应图标,其中一个用于背景,另一个用于前景。然而,前景向量图是从Illustrator中创建的svg文件,无法正确地调整大小或放置在图标中。
以下是前景向量图以供参考。

Foreground vector for future reference

根据自适应图标指南中的规范,我将向量视口高度和视口宽度调整为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>

Outcome

然而,当视口高度和视口宽度被设置为较小的值(例如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>

Outcome

我刚接触安卓开发,不确定是否有其他因素导致了这个问题。有一个类似的问题,但并未解决偏移效果的原因。
1个回答

4

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

我尝试了“向导”:

  • 右键单击res文件夹,然后单击New > Image Asset

这样,我就可以在背景矢量图上缩放我的矢量图,但是居中显示。

查看图标的生成矢量文件时,它将我的矢量路径嵌套在一个具有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中尝试。


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

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


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