【问题标题】:Android Studio 3.0 vector drawables and LINT tools:ignore="VectorPath"Android Studio 3.0 矢量绘图和 LINT 工具:ignore="VectorPath"
【发布时间】:2018-04-18 10:45:23
【问题描述】:

升级到 3.0 后,Android Studio 开始抱怨矢量绘图中的路径过长。

警告说:

向量路径很长(7958 个字符),这对性能不利。 考虑降低精度、去除次要细节或光栅化 向量。少... (⌘F1) 使用长向量路径不利于性能。 有几种方法可以使 pathData 更短: * 使用 less 精度 * 删除一些小细节 * 使用 Android Studio 矢量转换工具 * 光栅化图像(转换为 PNG)

https://developer.android.com/guide/topics/graphics/vector-drawable-resources.html 文档向我们展示了如何在我们的应用程序中使用矢量可绘制对象,并推荐它而不是 png 等。

我一直在使用 Android Studio 矢量转换工具和这项将 SVG 转换为矢量绘图的出色服务: http://inloop.github.io/svg2android/

是否还有其他服务可以减少矢量绘制的复杂性? 我在哪里可以找到有关我的矢量可绘制对象的“高级”程度的指南?

【问题讨论】:

  • 大约一个小时前,我刚刚发布了一个名为avdo 的矢量可绘制优化工具。您可能会发现它很有用!

标签: android lint android-vectordrawable


【解决方案1】:

尝试使用avocado优化矢量drawable!它应该有助于降低路径的复杂性。

【讨论】:

  • 它减少了 10.5% 的大小,但不幸的是,根据 lint,有些路径仍然太长。有没有办法分割路径或其他东西?还是我应该使用png?其中一个路径是 1595 个字符。
  • 文件变大,路径不变。
  • 阅读此article 一次
【解决方案2】:

在使用svg2android 之前,您可以添加一个额外的步骤,即通过svgo 运行它

我使用的示例管道如下所示(请注意,我使用的是svg2vectordrawable,而不是网络工具)

~$ svgo image.svg --config=config -o image.svg.optimized
~$ s2v "image.svg.optimized image.xml

我的config 文件看起来像(您可以使用它来满足您的需求):

"plugins": [
    {
        "convertPathData": {
            "leadingZero": false,
            "floatPrecision": 2
         }
    }
]

【讨论】:

  • 这是一个很棒的小贴士!非常感谢!
  • leadingZero 必须存在,否则你会得到InvalidVectorPath lint。
  • "leadingZero": false 停用前导零优化,从而使您的最终结果具有它们
【解决方案3】:

尝试通过减少Precision 来使用this tool

【讨论】:

  • 这个工具对我不起作用。它将文件大小减少了 85%。但是,它导致“错误膨胀类 ImageView”。当我取消选中“删除隐藏元素”时,它防止了膨胀错误,但文件仅减少了 20%,这不足以避免 lint 警告。
  • 它对我有用,但是。生成的图像质量不够好
【解决方案4】:

我的路径在 1800 左右,我使用 svg-path-editor 降低到 1000 左右。仍然显示警告,但非常接近最大值 800

我确信有更好的方法来使用这个工具,但我只是将pathData 从 android studio xml 复制到 Path 框,按下 Round 并将结果返回到 xml

如果你的路径超过2000,考虑转成png(带mdpi、hdpi、xhdpi...)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多