SVG是一种矢量图格式,是Scalable Vector Graphics三个单词的首字母缩写。在xml文件中的标签是,画出的图形可以像一般的图片资源使用,例子如下:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:viewportHeight="200.0"
android:viewportWidth="200.0"
android:width="24dp">
<path
android:fillColor="#fff"
android:pathData="M99.93,180.25 L99.93,180.25c-6.14,0 -10.85,-4 -13.85,-7 -7.11,-7.11 -56.05,-66.03 -59.82,-70.57 -8.87,-8.97 -13.75,-20.8 -13.75,-33.36 0,-12.65 4.95,-24.56 13.94,-33.55l1.26,-1.26c8.99,-8.99 20.94,-13.94 33.65,-13.94 12.71,0 24.66,4.95 33.65,13.94 0.21,0.21 0.4,0.43 0.57,0.66 0.01,0 1.61,2 4.18,2 2.69,0 3.9,-1.59 4.02,-1.77 0.23,-0.38 0.41,-0.58 0.72,-0.89 8.99,-8.99 20.94,-13.94 33.65,-13.94 12.71,0 24.66,4.95 33.65,13.94l1.26,1.26c8.99,8.99 13.94,20.9 13.94,33.55 0,12.55 -4.88,24.38 -13.74,33.35 -3.77,4.58 -51.29,62.4 -59.47,70.58C110.78,176.25 106.08,180.25 99.93,180.25zM61.36,31.7c-9.74,0 -18.89,3.79 -25.78,10.68l-1.26,1.26c-6.88,6.89 -10.68,16 -10.68,25.67 0,9.67 3.79,18.79 10.68,25.67 0.12,0.12 0.24,0.25 0.35,0.38 18.1,21.81 53.79,64.5 59.29,70 2.48,2.48 4.49,3.74 5.98,3.74 1.85,0 4.28,-2.03 5.98,-3.74 6.36,-6.37 41.32,-48.56 58.91,-69.98 0.12,-0.14 0.24,-0.28 0.37,-0.4 6.88,-6.89 10.68,-16 10.68,-25.67 0,-9.67 -3.79,-18.79 -10.68,-25.67l-1.26,-1.26c-6.88,-6.88 -16.04,-10.68 -25.78,-10.68 -9.58,0 -18.6,3.67 -25.45,10.36 -1.37,1.83 -5.44,6.24 -12.95,6.24 -7.19,0 -11.57,-4.59 -12.84,-6.14C80.05,35.41 70.99,31.7 61.36,31.7zM36.75,66.09c-0.24,0 -0.49,-0.03 -0.74,-0.1 -1.48,-0.41 -2.35,-1.94 -1.94,-3.42 1.31,-4.78 3.88,-9.18 7.42,-12.72l0.78,-0.78c7.1,-7.1 17.18,-9.97 26.96,-7.69 1.5,0.35 2.43,1.85 2.08,3.34 -0.35,1.5 -1.85,2.43 -3.34,2.08 -7.91,-1.84 -16.04,0.48 -21.76,6.2l-0.78,0.78c-2.86,2.86 -4.93,6.41 -5.99,10.26C39.09,65.28 37.97,66.09 36.75,66.09zM81.08,53.82c-0.71,0 -1.42,-0.27 -1.97,-0.82 -0.93,-0.93 -1.95,-1.79 -3.02,-2.55 -1.26,-0.89 -1.55,-2.63 -0.66,-3.88 0.89,-1.26 2.62,-1.55 3.88,-0.66 1.33,0.94 2.59,2 3.74,3.16 1.09,1.09 1.09,2.85 0,3.94C82.5,53.54 81.79,53.82 81.08,53.82z"/>
/>
</vector>

画出的图形为:

显而易见重点是pathData里面的大串数字。
一些基本语法:
M:move to 移动绘制点,作用相当于把画笔落在哪一点。
L:line to 直线,就是一条直线,注意,只是直线,直线是没有宽度的,所以你什么也看不到。
Z:close 闭合,嗯,就是把图封闭起来。
C:cubic bezier 三次贝塞尔曲线
Q:quatratic bezier 二次贝塞尔曲线
A:ellipse 圆弧

每个命令都有大小写形式,大写代表后面的参数是绝对坐标,小写表示相对坐标,相对于上一个点的位置。参数之间用空格或逗号隔开。
命令详解:

M (x y) 移动到x,y
L (x y) 直线连到x,y,还有简化命令H(x) 水平连接、V(y)垂直连接
Z,没有参数,连接起点和终点
C(x1 y1 x2 y2 x y),控制点x1,y1 x2,y2,终点x,y
Q(x1 y1 x y),控制点x1,y1,终点x,y
A(rx ry x-axis-rotation large-arc-flag sweep-flag x y)
rx ry 椭圆半径
x-axis-rotation x轴旋转角度
large-arc-flag 为0时表示取小弧度,1时取大弧度
sweep-flag 0取逆时针方向,1取顺时针方向

Android vector Path Data画图详解的更多相关文章

  1. Android图片缓存之Bitmap详解

    前言: 最近准备研究一下图片缓存框架,基于这个想法觉得还是先了解有关图片缓存的基础知识,今天重点学习一下Bitmap.BitmapFactory这两个类. 图片缓存相关博客地址: Android图片缓 ...

  2. Android 之窗口小部件详解--App Widget

    Android 之窗口小部件详解--App Widget  版本号 说明 作者 日期  1.0  添加App Widge介绍和示例  Sky Wang 2013/06/27        1 App ...

  3. 《Android群英传》读书笔记 (5) 第十一章 搭建云端服务器 + 第十二章 Android 5.X新特性详解 + 第十三章 Android实例提高

    第十一章 搭建云端服务器 该章主要介绍了移动后端服务的概念以及Bmob的使用,比较简单,所以略过不总结. 第十三章 Android实例提高 该章主要介绍了拼图游戏和2048的小项目实例,主要是代码,所 ...

  4. Android源码下载方法详解

    转自:http://www.cnblogs.com/anakin/archive/2011/12/20/2295276.html Android源码下载方法详解 相信很多下载过内核的人都对这个很熟悉 ...

  5. Android 之窗口小部件详解(三)  部分转载

    原文地址:http://blog.csdn.net/iefreer/article/details/4626274. (一) 应用程序窗口小部件App Widgets 应用程序窗口小部件(Widget ...

  6. Android中Canvas绘图基础详解(附源码下载) (转)

    Android中Canvas绘图基础详解(附源码下载) 原文链接  http://blog.csdn.net/iispring/article/details/49770651   AndroidCa ...

  7. Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送

    Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送, ...

  8. 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)

    . 基本上可以导入项目开始使用了 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21035637 ...

  9. Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!

    Android高效率编码-第三方SDK详解系列(一)--百度地图,绘制,覆盖物,导航,定位,细腻分解! 这是一个系列,但是我也不确定具体会更新多少期,最近很忙,主要还是效率的问题,所以一些有效的东西还 ...

随机推荐

  1. sql的case when用法

    select t.C_OPERATE_TIME MODIFY_TIME, t.c_code EMPLOYEE_CODE, t.c_name EMPLOYEE_NAME, CASE t.c_employ ...

  2. C#通信学习(一)

    基础知识 TCP/IP:Transmission Control Protocol/Internet Protocol,传输控制协议/因特网互联协议,又名网络通讯协议.简单来说:TCP控制传输数据,负 ...

  3. 【二分+交互】codeforces B. Glad to see you!

    codeforces.com/contest/809/problem/B 只需要找到2个被选中的,首先,注意到将区间二等分时左侧区间为[l,mid],右侧区间为[mid+1,r],dui(mid,mi ...

  4. vscode安装插件

    十分简单,知道名字叫啥后,直接搜索,安装,就完了,还可以查看自己已经安装了哪些插件. step1 如图.png step2 image.png step 3 去网上查找想要安装的插件的名字 step ...

  5. 牛客网 牛客网暑期ACM多校训练营(第三场)E KMP

    链接:https://www.nowcoder.com/acm/contest/141/E 题目描述 Eddy likes to play with string which is a sequenc ...

  6. hdu 3237

    dp 状态压缩 #include <cstdio> #include <cstdlib> #include <cmath> #include <map> ...

  7. 2017多校Round7(hdu6120~hdu6132)

    补题进度:9/13 1001 待填坑 1002(数学推导) 题意 有一个按顺序的n个点的k叉树,问每个点子树个数的异或和是多少(n,k<=1e18) 分析 可以先求出最大的d,满足d以上都是满K ...

  8. 简论远程通信(RPC,Webservice,RMI,JMS的区别)

    RPC(Remote Procedure Call Protocol)RPC使用C/S方式,采用http协议,发送请求到服务器,等待服务器返回结果.这个请求包括一个参数集和一个文本集,通常形成“cla ...

  9. Spring的JDBC示例

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/jdbc-framework-overview/spring-jdbc-example.html: ...

  10. Python 之 读取txt文件

    本文直接给出三种实现方法,代码例如以下. 方法一: f = open("Proc_Data.txt") # 返回一个文件对象 line = f.readline() # 调用文件的 ...