android - 在 Android 上使用 SVG 图标的最佳做法是什么?

标签 android svg icons

我即将创建我的第一个 Android native(因此不是基于浏览器的)应用程序,并寻找一些有关图标创建/配置的良好做法。 由于它应该支持多种设备/分辨率,我认为最好使用 SVG 来创建它们。至少有这个库:http://code.google.com/p/svg-android/ promise 在 Android 上提供对 SVG 的支持。

到目前为止,我还没有找到描述使用这个或另一个库作为在设备上呈现 SVG 图标的方法的资源,所以我有点不愿意使用它。到目前为止,我看到的最好的方法是使用 SVG 作为源格式,以不同分辨率预渲染基于 png 的图标。

所以我的问题是:SVG 图标是否是直接在设备上使用而无需 png 预渲染步骤的好选择(它是否有效),如果,为什么似乎没有人使用这种方法?

最佳答案

从 Lollipop (API 21) 开始,Android 定义了 VectorDrawable类,用于基于矢量图形定义可绘制对象。 Android Studio 1.4 adds the "Vector Asset Studio"使它们更易于使用,包括 SVG 导入功能和新的 Gradle 插件,该插件可在 API 20 及更早版本的构建时生成 PNG 版本的 VectorDrawable 图标。还有a third-party tool for converting SVGs to VectorDrawables .请记住,虽然矢量可绘制对象可以在 XML 中定义,但文件格式不是 SVG,并且并非所有 SVG 文件都可以成功转换。像图标这样的简单图形应该可以正常工作。

如果您仍需要自己生成 PNG,则需要生成图标 at various resolutions .为了便于生成这些 PNG,我将图标设计为 SVG,然后使用 Inkscape 导出为各种尺寸。这是免费的和跨平台的。它有一些很好的图标设计功能,包括图标预览 View (见下文),它可以生成漂亮的清晰 PNG。

enter image description here

关于android - 在 Android 上使用 SVG 图标的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9647770/

相关文章:

java - 如何在我刚刚在 Android 中拍摄的图像上放置水印图像?

css - SVG 不能用 CSS 缩放

javascript - SVG 矩形的笔划宽度在顶部/左侧被 chop 。我该如何解决?

javascript - 将事件委托(delegate)给 Canvas 并在处理程序中检索元素

底部带有图标选择问题的 Android FragmentTabHost 选项卡

android - fragment 未从 BackStack 中删除

Android Firebase 从实时数据库中获取其他用户的 uid

Android 网络检查不可靠

vb.net - 在运行时更改 NotifyIcon 图标

iphone - 如何从网站的Apple Touch图标中删除圆角