一个VectorDrawable示例
<vector xmlns:android=http://schemas.android.com/apk/res/android//命名空间
android:width="24dp" //在设备上显示的实际宽度
android:height="24dp" //在设备上显示的实际高度
android:viewportWidth="48.0"//透视窗口宽度,与path直接相关
android:viewportHeight="48.0"//透视窗口高度,与path直接相关
>
<path //路径1
android:fillColor="#ffffff"//路径颜色为白色
android:pathData="M8.0,19.994l32.0,0.0l0.0,8.0l-32.0,0.0z"//指令序列绘制路径(引用SVG标准)
/>
<path //路径2
android:fillColor="#ffffff"
android:pathData="M0.0,32.0l32.0,0.0l0.0,7.979l-32.0,0.0z"/>
<path
android:fillColor="#ffffff"
android:pathData="M16.0,8.0l32.0,0.0l0.0,8.0l-32.0,0.0z"/>
</vector>
VectorDrawable的作用等同于png,默认放在res/drawable路径下
什么是SVG
SVG 是使用 XML 来描述二维图形和绘图程序的语言。
SVG 指可伸缩矢量图形 (ScalableVector Graphics)
SVG 用来定义用于网络的基于矢量的图形
SVG 使用 XML 格式定义图形
SVG 图像在放大或改变尺寸的情况下其图形质量不会有所损失
SVG 是万维网联盟的标准
SVG 与诸如 DOM 和 XSL 之类的 W3C 标准是一个整体
SVG1.1 于 2003 年 1 月 14 日成为 W3C 推荐标准。
SVG的优势
SVG 可被非常多的工具读取和修改(比如记事本)
Android系统下可以方便地修改矢量图的颜色、长宽等
SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强。
SVG 是可伸缩的
SVG 图像可在任何的分辨率下被高质量地打印
Android系统下矢量图无需创建多个分辨率的图片)
SVG 可在图像质量不下降的情况下被放大
SVG 图像中的文本是可选的,同时也是可搜索的(很适合制作地图)
SVG 可以与 Java 技术一起运行
SVG 是开放的标准
SVG 文件是纯粹的 XML
VectorDrawable矢量图采用的标准相当于是SVG标准的子集,有些操作并不在android系统中得到支持。
来源:
SVG标准:
http://www.w3school.com.cn/svg/svg_intro.asp
http://www.w3.org/TR/SVG11/paths.html#PathData
Vector Drawable官网:
https://developer.android.com/training/material/drawables.html
https://developer.android.com/reference/android/graphics/drawable/VectorDrawable.html
https://developer.android.com/reference/android/graphics/drawable/AnimatedVectorDrawable.html
Vector、PNG、BMP等格式转换和查看工具:
http://inloop.github.io/svg2android/
AndroidStudio/AI(Adobe Illustrator)/CorelDRAW/inkscape/CAD