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

Posted

技术标签:

【中文标题】如何在 Android 中使用 XML 作为可绘制对象创建自定义形状?【英文标题】:How to create custom shape using XML as a drawable in Android? 【发布时间】:2017-05-10 07:31:07 【问题描述】:

看看this Gist。

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

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

我的问题:这是如何实现的?是否有任何工具可以做到这一点?

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

【问题讨论】:

使用免费的inkscape工具,将你的绘图保存为*.svg文件,然后使用android studio导入 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

您需要做的是使用 SVG 编辑器创建 SVG 图像,例如 Inkscape(我使用的那个) 或者如果你想要一个更专业(和昂贵)的编辑器,你可以使用Adobe Illustrator。您甚至可以使用在浏览器中访问的名为svg-edit 的工具。

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

右键单击 res 文件夹(通常放置可绘制对象的任何文件夹) 选择新建 > 矢量资产。这将打开以下窗口。

选择本地文件

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

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

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

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

【讨论】:

以上是关于如何在 Android 中使用 XML 作为可绘制对象创建自定义形状?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用xml中的可绘制形状绘制半椭圆形(Android)

带有 android 可绘制 xml 的光泽渐变

如何在相对布局中使用边框(可绘制)?

使用 XML 可绘制的垂直线

如何在 Android 中从 NDK 访问可绘制文件

如何在心形可绘制 xml 中添加边框(描边)线