Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android studio SVG文件与Android Studio矢量资源之间不一致_Android Studio_Svg - Fatal编程技术网

Android studio SVG文件与Android Studio矢量资源之间不一致

Android studio SVG文件与Android Studio矢量资源之间不一致,android-studio,svg,Android Studio,Svg,我正在使用Sketch软件构建svg图像,以便在我的android项目中使用。我对这件事有意见: 如你所见,图片还可以,我用Chrome和Macos预览查看了预览 当我尝试在Android Studio中导入SVG时,导入预览如下所示: 填充圆中减去的圆消失了。导入日志会向我发送以下消息: In ic_percent.svg: WARNING@ line 10 We don't scale the stroke width! WARNING@ line 11 We don't scale t

我正在使用Sketch软件构建svg图像,以便在我的android项目中使用。我对这件事有意见:

如你所见,图片还可以,我用Chrome和Macos预览查看了预览

当我尝试在Android Studio中导入SVG时,导入预览如下所示:

填充圆中减去的圆消失了。导入日志会向我发送以下消息:

In ic_percent.svg:
WARNING@ line 10 We don't scale the stroke width!
WARNING@ line 11 We don't scale the stroke width!
WARNING@ line 12 We don't scale the stroke width!
WARNING@ line 13 We don't scale the stroke width!

有人知道我的导入发生了什么吗?

我在导入用Inkscape制作的.svg文件时遇到了类似的问题。Android Studio导入程序似乎不支持某些属性

我发现最简单的方法就是使用。不确定它是如何处理Sketch.svg的,但它似乎对来自Inkscape的文件起到了作用

如果其他人使用Inkscape,请不要忘记将您的文档大小设置为矢量大小“文件->文档属性…”,或者直接使用文本编辑器在文件中编辑它。

以下是操作方法:

  • 在草图中打开.svg
  • 选择页面列表中缺少的圆圈。就我而言,看起来是这样的
  • 单击填充(齿轮形图标)并将奇偶变为非零
  • 打开图层菜单->路径->反向顺序
  • 将形状导出回.svg格式
  • 将.svg转换为Vector Drawable(从Android Studio或第三方工具)

  • 就这样!归功于

    在Inkscape中,您可以选择使用笔划宽度的行a.s.o.,并在保存为sgv之前将其转换为路径:


    我在使用inkscape时也遇到了同样的问题。不确定是否可以使用草图,但尝试起来很简单


    只需启动一个新的草图项目并粘贴上一个项目中的矢量。这解决了Inkscape上相同情况下的问题。android的导入工具似乎不欢迎在图片创建过程中使用的一些额外属性。

    简短回答:取消SVG中的所有内容的分组,确保没有图层转换和重新保存

    长答案:每个笔划都有宽度,它是数字,在SVG中编码为

    
    
    同时,每个斯托克都是一个对象,为了便于编辑,可以对对象进行分组。组也是对象,因此可以分组以使组具有嵌套组。 最重要的是,组具有变换,这些变换是在向量编辑器中移动、缩放或旋转分组对象(例如路径)时创建的,并在SVG中编码为

    
    
    “transform”属性可以是一个“矩阵”或一系列线性变换,如“rotate”或“translate”等,在这种情况下,这并不重要。组的所有变换都应用于所有包含的对象特性

    因此,组“变换”应用于包含的路径“笔划宽度”

    这正是Android Studio不支持的

    解决方案很简单:解组所有组并使用“力向量编辑器”(force vector editor)将变换应用于真实的几何对象。然后再出口

    结果文件中仍然会有组,这很好——这是在SVG中存储层的唯一方法。只需确保文件中的层未应用变换。很可能您不必为此做任何事情,因为绝大多数向量编辑器只能对其进行视觉效果而不能进行几何效果

    就这样

    一个非常简单的文件示例,它将破坏Android Studio导入。这只是两个随机笔划,使用鼠标分组和缩放:

    
    
    对Android Studio而言,解组后的同一部分也适用:


    我以svg格式导出矢量图形时遇到了同样的问题。
    但是Android studio在导入矢量图形时也可以处理psd文件格式。在导出过程中,我将文件格式设置为psd后,导入android studio对我来说效果很好。

    你找到解决方案了吗?一点也没有,因为现在我放弃了,我正在为这个特定的资产使用mipmap,但我真的很想知道为什么我会有这种奇怪的行为。奥里向设计师寻求帮助,他在illustrator或类似的东西中,选择了所有,他右键单击选择并单击取消组合,然后他移除了遮罩层,最后他将整个东西重新组合在一起。它现在适合我了。也许它会帮助你,在草图中导出svg文件的正确方法有人打电话给我吗我是,很棒的博客@Bob!谢谢,@aldok.)从Figma导出的SVG也有同样的问题。颠倒内部形状的顺序就成功了。谢谢这解释了问题的原因及其解决方案,应该是公认的答案。现在如何使用?我试图获取输出代码并另存为.svg并使用它,但Studio说这是无效的。单击保存副本,然后选择优化的SVG。单击“保存”时,请确保选中“折叠组”,并且未选中“为类似属性创建组”。