Android Studio 3.0矢量drawables和LINT工具:ignore ="VectorPath"

Ove*_*olt 16 android lint android-vectordrawable

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

警告说:

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

文档https://developer.android.com/guide/topics/graphics/vector-drawable-resources.html向我们展示了如何在我们的应用程序中使用矢量绘图,并通过png等推荐它.

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

是否还有其他服务可以减少矢量可绘制的复杂性?我在哪里可以找到关于我的矢量绘图可以"先进"的指导方针?

Ale*_*ood 19

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

  • 它减少了 10.5% 的大小,但不幸的是,根据 lint,一些路径仍然太长。有没有办法分割路径之类的?还是我应该使用 png?路径之一是 1595 个字符。 (5认同)

Lev*_*yan 7

尝试通过减少来使用此工具Precision

  • 这个工具对我不起作用。文件大小减少了 85%。然而,它导致了“Error inflationing class ImageView”。当我取消选中“删除隐藏元素”时,它可以防止出现膨胀错误,但文件仅减少了 20%,这不足以避免 lint 警告。 (3认同)

mar*_*one 6

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

我使用的示例管道看起来像(请注意,我使用的是svg2vectordrawable而不是Web工具)

~$ svgo image.svg --config=config -o image.svg.optimized
~$ s2v "image.svg.optimized image.xml
Run Code Online (Sandbox Code Playgroud)

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

"plugins": [
    {
        "convertPathData": {
            "leadingZero": false,
            "floatPrecision": 2
         }
    }
]
Run Code Online (Sandbox Code Playgroud)


Ran*_*Ran 5

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

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

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

在此处输入图片说明