Android Vector Drawable与SVG Path不同

时间:2015-08-01 17:45:02

标签: android svg vector-graphics android-vectordrawable

创建了一个svg图标(效果很好)但是,当在android中显示为矢量drawable时,其中一个路径不会呈现相同的效果。 这是原始的svg路径:

<path
   d="m 34.424316,19.525423 0,-1.2854 -2.329101,0 0,-0.604248 2.449951,-3.479004 
0.53833,0 0,3.479004 0.725098,0 0,0.604248 -0.725098,0 0,1.2854 -0.65918,0 z m 
0,-1.889648 0,-2.420655 -1.680908,2.420655 1.680908,0 z"
   style="fill:#FF00FF"
   id="path3383" />

这就是它的样子:

svg path

android路径:

<path
    android:fillColor="#FF00FF"
    android:pathData="M 34.424316,19.525423 l 0,-1.2854 -2.329101,0 0,-0.604248
2.449951,-3.4790040.53833,0 0,3.479004 0.725098,0 0,0.604248 -0.725098,0 0,1.2854 -0.65918,0 z m
0,-1.889648 0,-2.420655 -1.680908,2.420655 1.680908,0 z" />

它的样子:

android path

P.S。 android studio让它变得模糊,但这不是一个问题,它在Android棒棒糖上渲染得如此清晰。

问题是4中的孔被填满了。即使两个路径大部分都是相同的(唯一的区别是在第一个坐标之后添加了'l'。但是如果我删除它,则4根本不会渲染)。

1 个答案:

答案 0 :(得分:1)

帖子的路径数据中没有命令字符。提问者说的是什么&#34; l&#34;在第一组坐标实际上是&#34; M&#34;之后的第一个命令字符后引入。根据文档,如果命令字符与之前相同,则可以省略它以节省空间。但在这里&#34; l&#34;提问者提到的是第一个&#34; l&#34;之后&#34; M&#34; (移动到)命令字符。 &#34; L&#34;是&#34;行到&#34;命令字符。它是第一个在这种情况下不能省略。我修复了文件并给出了下面文件的内容。

我显示你的帖子的第二个路径数据向左移动了10个像素(M 24.424316,19.525423) 我将fillColor更改为蓝色。

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="30dp"
        android:height="30dp"
        android:viewportWidth="40.0"
        android:viewportHeight="40.0">



    <path
        android:pathData="


     m  34.424316,   19.525423
     l   0,          -1.2854
     l  -2.329101,    0
     l   0,          -0.604248
     l   2.449951,   -3.479004
     l   0.53833,     0
     l   0,           3.479004
     l   0.725098,    0
     l   0,           0.604248
     l  -0.725098,    0
     l   0,           1.2854
     l  -0.65918,     0

     m   0,          -1.889648
     l   0,          -2.420655
     l  -1.680908,    2.420655
     l   1.680908,    0      "


    android:strokeLineCap="square"
    android:strokeColor="#ffff00ff"
    android:fillColor="#ff0000ff"
    android:strokeWidth="0.2"/>

    <path
    android:pathData="


    M   24.424316,  19.525423
    l    0,         -1.2854
    l   -2.329101,   0
    l    0,         -0.604248
    l    2.449951,  -3.479004
    l    0.53833,    0
    l    0,          3.479004
    l    0.725098,   0
    l    0,          0.604248
    l   -0.725098,   0
    l    0,          1.2854
    l   -0.65918,    0

    m    0,         -1.889648
    l    0,         -2.420655
    l   -1.680908,   2.420655
    l    1.680908,   0 "

    android:strokeLineCap="square"
    android:strokeColor="#ffff00ff"
    android:fillColor="#ff0000ff"
    android:strokeWidth="0.2"/>

</vector>

创建一个空白的xml文件并将上述内容复制到其中。然后你应该看到带有洋红色轮廓和蓝色填充的数字4(两次)。我在这里做了,显示很清晰。我不知道提问者提到的模糊的原因。