简体   繁体   English

将矢量资源导入 Android Studio 时出错

[英]Error importing Vector Asset into Android Studio

I created a simple play-button image in Illustrator, saved it as a SVG, used an online SVG-to-Drawable converter to create an xml of the file, and then tried using Android Studio's Vector Asset tool to import the file into my project.我在 Illustrator 中创建了一个简单的播放按钮图像,将其保存为 SVG,使用在线 SVG-to-Drawable 转换器创建文件的 xml,然后尝试使用 Android Studio 的 Vector Asset 工具将文件导入我的项目. However, when imported, one of the elements of the drawable is missing, in this case the white triangle in the middle of the circle.但是,当导入时,drawable 的元素之一丢失了,在这种情况下是圆圈中间的白色三角形。

play_circle.xml (the converted xml file) play_circle.xml(转换后的xml文件)

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:viewportWidth="94"
    android:viewportHeight="102"
    android:width="94dp"
    android:height="102dp">
  <path
      android:pathData="M85 52.5A38.5 38.5 0 0 1 46.5 91 38.5 38.5 0 0 1 8        
52.5 38.5 38.5 0 0 1 46.5 14 38.5 38.5 0 0 1 85 52.5Z"
  android:strokeWidth="2"
  android:fillColor="#424900"
  android:strokeAlpha="0.29"
  android:fillAlpha="0.29"
  android:strokeColor="#000000"
  android:strokeMiterLimit="10" />
<path
  android:pathData="M71.39 51.63L34.81 30.51"
  android:fillColor="#ffffff" />
</vector>

play_button.svg, as created in illustrator and how it's intended to be play_button.svg,在 illustrator 中创建以及它的用途

how it appears after being imported into android studio.Using Android Studio's Vector Asset Studio tool, you can see that the white triangle is already missing.导入android studio后的样子。使用Android Studio的Vector Asset Studio工具,可以看到白色的三角形已经不见了。

While converting png to svg there are some rules which we need to follow.在将 png 转换为 svg 时,我们需要遵循一些规则。 All converters are not working fine.所有转换器都无法正常工作。 In my case, I found the best converter site which will give you preview image to confirm during conversion, which will ask for free registration and then you can download your svg file.就我而言,我找到了最好的转换器站点,它会在转换过程中为您提供预览图像以确认,这将要求免费注册,然后您可以下载您的 svg 文件。

Convert PNG to SVG - Which requires single sign up and allows only 2 tokens per day by single email将 PNG 转换为 SVG - 这需要单点注册,并且每天只允许通过一封电子邮件发送 2 个令牌

Alternatives : Reference2 Reference3替代方案:参考 2参考 3

After generating svg,Use the following tool to convert your svg to vector drawable (It's necessary because somehow android studio is not able to import all the formats and style generated by random converters)生成 svg 后,使用以下工具将您的 svg 转换为可绘制矢量(这是必要的,因为不知何故 android studio 无法导入随机转换器生成的所有格式和样式)

Generate vector drawable from SVG从 SVG 生成可绘制的矢量

I did the above steps for your image.我为您的图像执行了上述步骤。 and I created perfect vector drawable which you can directly copy to your drawable folder by creating new xml.我创建了完美的矢量 drawable,您可以通过创建新的 xml 将其直接复制到您的 drawable 文件夹中。 (Tested by applying as source to imageview. Enjoy!) (通过作为源应用到 imageview 进行测试。享受!)

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="138dp"
android:height="151dp"
android:viewportWidth="138"
android:viewportHeight="151">

<path
    android:fillColor="#ffffff"
    android:pathData="M 0.00 0.00 L 136.94 0.00 C 136.87 48.67 136.95 97.33 136.88 146.00 C 137.12
147.64 136.29 149.93 138.00 151.00 L 0.00 151.00 L 0.00 0.00 Z" />
   <path
    android:fillColor="#c7c9b7"
    android:pathData="M 136.94 0.00 L 138.00 0.00 L 138.00 151.00 L 138.00 151.00 C 136.29 149.93
    137.12 147.64 136.88 146.00 C 136.95 97.33 136.87 48.67 136.94 0.00 Z" />
<path
    android:fillColor="#c7c9b7"
    android:pathData="M 60.36 18.50 C 77.71 16.46 95.72 22.52 108.36 34.56 C 120.55 46.19 127.59 63.12
    126.81 79.99 C 126.14 101.98 112.25 123.13 91.95 131.82 C 81.01 137.33 68.13
    138.47 56.13 136.23 C 37.74 133.08 21.41 120.27 13.46 103.43 C 7.33 90.93 6.03
    76.16 9.58 62.73 C 14.43 43.60 29.48 27.32 48.31 21.29 C 52.28 20.16 56.25 18.96
    60.36 18.50 Z" />
<path
    android:fillColor="#ffffff"
    android:pathData="M 46.98 47.96 C 46.74 46.39 47.53 43.71 49.61 44.42 C 67.56 54.69 85.44 65.06
    103.33 75.43 C 104.44 75.89 105.51 76.60 105.76 77.86 C 105.26 78.65 104.62
    79.29 103.84 79.80 C 86.11 90.08 68.32 100.27 50.60 110.59 C 49.59 111.11 48.54
    111.11 47.46 110.58 C 47.35 110.18 47.12 109.38 47.01 108.98 C 46.95 88.64 47.03
    68.30 46.98 47.96 Z" />
 </vector>

I am a UX designer and I had the same problem.我是一名用户体验设计师,我遇到了同样的问题。 After a lot of trial and error and google searches I found out a solution for this.经过大量的反复试验和谷歌搜索,我找到了解决方案。

  1. Create the SVG in any of the adobe platforms在任何 adobe 平台中创建 SVG

  2. Remove any shadows去除任何阴影

  3. make sure the length and the width aka the dimensions are in whole numbers and not decimals (43.5 > 44)确保长度和宽度又名尺寸是整数而不是小数(43.5 > 44)
  4. The stroke (if you are using XD) make sure is only inner stroke or outer stoke and not a center stroke笔画(如果您使用 XD)确保只是内笔画或外笔画,而不是中心笔画
  5. Export it to SVG and import into android studio and you should see a preview将其导出为 SVG 并导入到 android studio 中,您应该会看到预览

PS: text in images wont work but will still import. PS:图像中的文本不起作用,但仍会导入。

I could't have any of my asset understood by vector asset studio.我无法让矢量资产工作室理解我的任何资产。 The reason is that my system was in french.原因是我的系统是法语的。 You need it in english because , is different than .您需要英文版本,因为,. in the path of the svg and it is automatically translated in the locale of your system.在 svg 的路径中,它会在您系统的语言环境中自动翻译。 Try to make your system run an english locale (at the OS level - change language)尝试使您的系统运行英语语言环境(在操作系统级别 - 更改语言)

When the vectors are created in sketch, then this error generally comes up. 在草图中创建矢量时,通常会出现此错误。 Here's an article about how to fix it. 这是有关如何修复它的文章

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM