如何为Android创建矢量可绘制图形?

68

我对VectorDrawables不熟悉。

我能看到Android Studio提供的默认vector drawables,如ic_menu_galleryic_menu_camera等,效果很好。所以我尝试通过先将我的png图像转换为svg,然后使用路径和填充值来创建自己的vector drawables,即将SVG文件中的android:pathData替换为d,将android:fillColor替换为fill标签。但是它给出的向量绘图看起来扭曲或损坏了。

如果我的方法不正确,请给我建议。


请查看此答案:https://dev59.com/ol8d5IYBdhLWcg3wsT0b#35738726 - Amit Vaghela
9个回答

98

您可以使用Android Studio。将png转换为svg文件的在线工具:PNG to SVG
File -> New -> Vector Asset

您可以选择Material Icon或本地SVG文件

对于SVG颜色,可以使用:

  <ImageButton
    android:layout_width="48dp"
    android:layout_height="48dp"
    android:id="@+id/button"
    android:src="@drawable/ic_more_vert_24dp"
    android:tint="@color/primary" />

或者

imageView.setColorFilter(getResources().getColor(android.R.color.black), PorterDuff.Mode.SRC_IN);

可以使用在线工具将SVG转换为PNG: coolutils

将SVG转换为Android drawable: inloop


如何在v21下使用?attr/colorPrimary更改颜色(不使用RGB颜色) - Akbar
也许有人可以帮忙……我正在尝试使用autotracer.org和inloop.github.io/svg2android将ibb.co/SdZjjTH转换为xml。它可以工作,但是当我尝试在我的应用程序中使用它时,应用程序会崩溃。你能否检查一下它是否适用于你?谢谢! - Yossi

44

以下是将任何 png/jpg 转换为矢量可绘制图形的最佳方法:

  1. 下载软件InkScape

  2. 在 InkScape 中打开您的 png,按照 视频 中显示的步骤将其转换为 svg

  3. 使用 SVG to Vector Drawable tool 将 svg 转换为矢量可绘制图形。其他工具如 svg2android 有时无法正常将 svg 转换为矢量可绘制图形

  4. 将代码复制到新的可绘制资源文件中。现在可以将其用作常规的可绘制图形。

如果您已经有一个 svg,则可以直接从第 3 步开始。


2
@KirillKarmazin,我不是这个教程的创建者。我也是从中学习的。 - suku

21

我也遇到了这个问题,发现这个网站非常有用:

https://materialdesignicons.com/

这里有许多图标,通过"高级导出"您可以轻松编辑设置。 对我来说,这是创建矢量可绘制图形最快、最简单的方法,如果您不想下载文件,您可以查看并复制代码,不仅作为矢量可绘制图形,甚至还可以作为SVG或XAML。 哦,而且它是免费的:)

  1. 选择一个图标
  2. 点击高级导出
  3. 编辑设置
  4. 点击“查看矢量可绘制图形”或下载并将其放入您的项目中:)

它可以节省我很多时间 - Umasankar

6
第一步 首先,需要将它转换成SVG格式。 - 对于黑白SVG转换器,有很多工具可供选择,但是彩色转换的好工具很少。其中https://www.autotracer.org/ 是最佳之一,也适用于我。请转换并下载SVG文件。 第二步- 在“Android Studio”中进入drawable文件夹,并右键选择“New - Vector Asset”。 第三步- 选择从步骤1下载的SVG文件。在Android Studio中 第四步- 如果使用了带颜色的图标作为导航抽屉/视图,则不要忘记将navigationView.setItemIconTintList(null)设置为null。
祝好!

5
在Android Studio 3.1中: 文件 -> 新建 -> 矢量图资产 资产类型: 选择本地文件
单击路径以选择.svg或.psd文件
如果您没有图像,请转到Google图像,高级图像搜索。使用文件类型:SVG文件

2

你可以使用Photoshop/Illustrator创建自己的SVG图像或图标,并可以在Android Studio 2.+中导入矢量素材。有时,导入会导致图像失真,如果SVG很复杂或具有许多元素,则可以将其作为单个元素重叠的ImageViews的矢量资产来使用。


1
尝试这个: 步骤1:Drawable > 新建 > 矢量资产。

enter image description here

选择剪贴画(使用现有图标) 从本地文件中选择 选择并添加。您可以以相同的方式添加彩色图标。


1

Android Studio创建矢量图标

您可以使用Asset Studio完成此操作。

File -> New -> Vector Asset -> Configure 

0

由于这是我在尝试解决项目中的错误时找到的第一个问题,因此我将添加我的解决方案。

确保将矢量可绘制文件添加为可绘制文件夹中的XML文件。我将其添加为SVG可绘制文件,但代码无法识别。

如果它是SVG,请将扩展名更改为XML,它就可以工作了。


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