Andrid5.0新特性——SVG(可缩放矢量图)

什么是SVG(Scalable Vector Graphics)

SVG一种用于描述图像的标记语言。类似HTML。

SVG严格遵从XML语法,并用文本格式的描述性语言来描述图像内容,因此是一种和图像分辨率无关的矢量图形格式。

标准制定开发历史

  • 2001年9月4日,发布SVG 1.0。
  • 2003年1月4日,发布SVG 1.1。
  • 2003年1月14日,推出SVG移动子版本:SVG Tiny和SVG Basic。
  • 2008年12月22日,发布SVG Tiny 1.2。
  • 2011年8月16日,发布SVG 1.1(第2版),成为W3C目前推荐的标准。
  • W3C目前仍正在研究制定SVG2,目前最新的草稿发布见此。

示例

下面是一个红色三角形的svg示例:



<svg width="4cm" height="4cm" viewBox="0 0 400 400"xmlns="http://www.w3.org/2000/svg" version="1.1"><title>Example triangle01- simple example of a 'path'title><desc>A path that draws a triangledesc><rect x="1" y="1" width="398" height="398"fill="none" stroke="blue" /><path d="M 100 100 L 300 100 L 200 300 z"fill="red" stroke="blue" stroke-width="3" />
svg>

效果图如下:
svg

说明:

  • svg矢量图的根节点就是svg,包含图片宽高和视口大小等信息。
  • rect表示一个矩形。
  • path(点击查看path元素介绍)表示一条路径,矢量图的形状就是通过path元素定义的,常见属性有:
    • M (x y)+:在给定的(x,y)坐标开始path;
    • L (x y)+:绘制一条直线从当前点到给定的(x,y)坐标;
    • z:闭合当前path。
    • C (x1 y1 x2 y2 x y)+:贝塞尔曲线;

点击查看svg元素索引列表

用SVG有什么好处

  • svg是矢量图,缩放不会失真,位图缩放可能产生失真问题。
  • 屏幕适配方便,一般我们为了适配不同分辨率可能会在ldpi、mdpi、hdpi、xhdpi等目录放对应分辨率的jpg/png图片,现在只需要一个xml文件,而且xml文件比jpg/png体积小,有利于缩减apk体积。

SVG相关工具

  • 在线SVG编辑器:Method Draw,svgedit
  • 离线SVG编辑器:inkscape,Adobe Illustrator
  • svg转换Android VectorDrawable工具:
    • svg2android,Gtihub
    • SVG2VectorDrawable

在Android中使用SVG

创建矢量图片(VectorDrawable)

在Android中,负责矢量图加载,解析,绘制相关工作的类就是VectorDrawable,通过加载一个基于XML的VectorDrawable文件,在draw方法中把矢量图绘制到Canvas。在Android中矢量图一般用于图标和按钮。

1.这里使用Method Draw先编辑一个svg格式的矢量图,点击打开Method Draw,编辑完成后导出svg格式文件。

heart.svg

<svg height="400" width="580" xmlns="http://www.w3.org/2000/svg"><g stroke="null"><title>Layer 1title><path d="m218.25,65.499992c31.171158,0 61.067017,21.318344 71.75,50.4375c10.683014,-29.119156 40.610474,-50.4375 71.75,-50.4375c40.546692,0 71.75,32.481865 71.75,75.656258c0,59.348114 -60.477264,105.195892 -143.5,193.34375c-8


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部