SVG (可缩放矢量图形)是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图形格式。它由万维网联盟制定,是一个开放标准。详细介绍见百度百科

可用于路径数据的命令

命令 参数解析 意义
M X Y X,Y 目标绝对坐标点 将画笔移动到指定的坐标位置,但未发生绘制
L X Y X,Y 目标绝对坐标点 画直线到指定的坐标位置
H X X 绝对X轴坐标 画水平线到指定的X轴坐标
V Y Y 绝对Y轴坐标 画垂直线到指定的Y轴坐标
C X1 Y1, X2 Y2, ENDX ENDY X1,Y1 控制点1坐标,X2,Y2 控制点2坐标,ENDX,ENDY 终点坐标 三次贝塞尔曲线
S X2 Y2, ENDX ENDY X2,Y2 控制点坐标,ENDX,ENDY 终点坐标 三次贝塞尔曲线 S命令可以用来创建与之前那些曲线一样的贝塞尔曲线,如果S命令跟在一个C命令或者另一个S命令的后面,它的第一个控制点,就会被假设成前一个控制点的对称点。如果S命令单独使用,前面没有C命令或者另一个S命令,那么它的两个控制点就会被假设为同一个点。
Q X Y, ENDX ENDY X,Y 起点坐标, ENDX,ENDY终点坐标 二次贝塞尔曲线
T ENDX ENDY ENDX,ENDY终点坐标 二次贝塞尔曲线 对称斜率
A RX RY, XROTATION, FLAG1, FLAG2, X Y RX,RY轴半径,XROTATION X轴旋转角度,FLAG1决定弧线是大于还是小于180度,0表示小角度弧,1表示大角度弧, FLAG2 表示弧线的方向,0表示从起点到终点沿逆时针画弧,1表示从起点到终点沿顺时针画弧。 弧线
Z 关闭路径

ps: 以上所有命令均允许小写字母。大写表示绝对定位,小写表示相对定位。
pps: 关于贝塞尔曲线,推荐阅读以下网站: 百度百科深度掌握SVG路径path的贝塞尔曲线指令(之后学习清楚后会整理)

4.4 官方低版本支持

  • Android最终发布了官方Support包(support-vector-drawable)的VectorDrawableCompat做低版本兼容(最低支持到API 7)
  • 所以如果我们使用VectorDrawableCompat加载矢量资源,就不需要再生成png了
  • 要在工程中支持低版本的矢量图形和动画,需要support-vector-drawable库和23.2.0+的appcompat-v7
    (还要取消png生成,支持于android studio1.4)
  • compile 'com.android.support:appcompat-v7:23.2.0'编译出support-vector-drawable-23.2.0animated-vector-drawable-23.2.0这两个库。
  • 工程配置方面,VectorDrawableCompat需要依赖aapt的一些功能,来保持最近矢量图使用的添加的属性ID,以便他们可以被v21之前的引用。想要的在build.gradle需要增加一些配置:
  • 如果Gradle插件版本V2.0及以上,则需要加入:
    android {  
        defaultConfig {  
           vectorDrawables.useSupportLibrary = true  
        }  
    }
    
  • 集成时需要注意:
    • 使用android:src属性的地方需要替换为app:srcCompat属性
    • 在非src属性的地方使用矢量图时,需要将矢量图用drawable容器(如StateListDrawable, InsetDrawable, LayerDrawable, LevelListDrawable, 和RotateDrawable)包裹起来使用,否则会在低版本的情况下报错。
      ps: 详细的说明可以参考:http://www.tuicool.com/articles/3emUnmM