android - 如何为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 的新手,所以我不确定还有哪些其他因素可能导致这种情况。还有另一个类似的问题,但是没有解决抵消效应的原因。
解决方案
为了最小化我的应用程序大小,我尝试对通知和图标使用相同的向量并遇到完全相同的问题。
我尝试了“向导”:
- 右键单击 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 中尝试。
这可能对你有用——在我的情况下,我不能使用新的图标前景向量作为通知,因为它太小了。所以我似乎需要不同大小的可缩放矢量图形的副本!
如果我们可以在自适应图标文件本身中缩放自适应图标的前景/背景部分,那将是理想的 - 也许有人已经知道如何做到这一点?
推荐阅读
- bash - 历史搜索 (ctrl+r) 溢出终端并带有“偶然”输出
- android - Expo React-Native:深度链接在 android 上不起作用
- java - Catalina 上的 Aptana 3 错误 - 需要旧版 Java Runtime 6
- java - 我正在尝试创建一个带有 if 语句的 for 循环,以在 arraylist 中查找特定名称
- python - 如何在 Pandas 中将类似的列名组合成单独的行
- java - 为什么我的对象无法创建?
- c# - 选择列表/下拉列表中的表格类别列表
- java - 如何在 JavaFX 的 intersects 方法中添加侦听器?
- python - 我不知道如何解决这个错误:TypeError: authenticate_name() missing 1 required positional argument: 'eUsername'
- firebase - Flutter & Firestore - 如何在使用多个查询时创建不同的文档列表?