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

标签 android xml android-studio svg vector-graphics

我在 Illustrator 中创建了一个简单的播放按钮图像,将其保存为 SVG,使用在线 SVG-to-Drawable 转换器创建该文件的 xml,然后尝试使用 Android Studio 的 Vector Asset 工具导入该文件进入我的项目。但是,导入时,可绘制元素之一丢失,在本例中为圆圈中间的白色三角形。

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

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.

最佳答案

将 png 转换为 svg 时,我们需要遵循一些规则。所有转换器都无法正常工作。就我而言,我找到了最好的转换器网站,它会在转换过程中为您提供预览图像以进行确认,该网站会要求免费注册,然后您可以下载您的 svg 文件。

Convert PNG to SVG - 需要单次注册,并且每天仅允许通过一封电子邮件使用 2 个 token

替代方案: Reference2 Reference3

生成 svg 后,使用以下工具将您的 svg 转换为矢量绘图(这是必要的,因为不知何故 android studio 无法导入随机转换器生成的所有格式和样式)

Generate vector drawable from SVG

我为您的图像执行了上述步骤。我创建了完美的矢量可绘制文件,您可以通过创建新的 xml 直接将其复制到可绘制文件夹中。 (通过作为 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>

关于android - 将矢量资源导入 Android Studio 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39607647/

相关文章:

android - 此语言级别不支持钻石类型

android - 适用于 Android 的蓝牙打印机的步骤

xml - 我如何在 PowerShell 中使用 XmlReader 来传输大/巨大的 XML 文件?

Android Studio 1.1.0 批量 "cannot resolve symbol"错误

java - 具有 namespace 的文档的 Java XPath 解析器的奇怪行为

xml - XSL : List divided into columns

java - 如何修复空光标 - android studio

android - takeScreenshot 总是为 uiautomator 返回 false

java - Appium v​​s Espresso 用于自动化测试框架

android - 实现轮状界面导航工具