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.0
和animated-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
- 使用