如何使用 XML 作为 Android 中的可绘制对象来创建自定义形状?

How to create custom shape using XML as a drawable in Android?

看看 this 要点。

上面的要点创建了一个如下所示的可绘制对象:

很明显,pathData 属性 已经提供了坐标。这是如何实现的,我的意思是,当然有人没有根据自己的需要找到每个点。

我的问题:这是如何实现的?有没有工具可以这样做?

像这样的 Drawable 通过避免使用图像来减小应用程序的大小。此外,XML 中还有一些关于可绘制对象的问题,例如 this, this 等等,但我认为我的问题非常不同(并且可能很有用)。

您可以使用一些工具设计您的 SVG 文件,例如 Android Vector Asset Studio

通常人们不会自己编写 SVG 路径,他们使用工具或编辑器绘制草图并生成文件。

您需要做的是使用 SVG 编辑器创建 SVG 图像,例如 Inkscape(我使用的那个) 或者如果你想要一个更专业(和昂贵)的编辑器,你可以使用 Adobe Illustrator. You can even use a tool called svg-edit,它可以在浏览器中访问。

创建所需的艺术作品后,保存您的 SVG 文件。 接下来转到并打开 Android Studio。

  • 右键单击 res 文件夹(通常放置可绘制对象的任何文件夹)
  • Select 新建 > 矢量资源。这将打开以下 window.

  • Select 本地文件

  • 编辑路径以将其定向到您的 svg 文件的位置
  • 根据图像的复杂程度,可能会抛出错误(并非所有 svg 元素都会转换为 xml。因此,避免在 svg 中使用复杂的艺术,在这种情况下使用光栅图像)。
  • Android 工作室自己做了一些修复。因此,即使抛出错误,如果您的图像渲染良好,那么您就可以开始了。
  • 单击 下一步 > 调整更多设置 > 单击 完成
  • 您的 xml 矢量资源已成功创建。

注意: 为确保向后兼容性,请将以下内容添加到您的 build.gradle

android{
         defaultConfig{
                        vectorDrawables.useSupportLibrary = true
                      }
       }
dependencies{
              compile 'com.android.support:appcompat-v7:23.2.0'
            }

希望对您有所帮助。 有关详细信息,请参阅 official documentation.