网络测速全解析之一:自定义View基础知识(五)

常用速查表:

作用 相关方法 备注
移动起点 moveTo 移动下一次操作的起点位置
设置终点 setLastPoint 重置当前path中最后一个点位置,如果在绘制之前调用,效果和moveTo相同
连接直线 lineTo 添加上一个点到当前点之间的直线到Path
闭合路径 close 连接第一个点连接到最后一个点,形成一个闭合区域
添加内容 addRect, addRoundRect, addOval, addCircle, addPath, addArc, arcTo 添加(矩形, 圆角矩形, 椭圆, 圆, 路径, 圆弧) 到当前Path (注意addArc和arcTo的区别)
是否为空 isEmpty 判断Path是否为空
是否为矩形 isRect 判断path是否是一个矩形
替换路径 set 用新的路径替换到当前路径所有内容
偏移路径 offset 对当前路径之前的操作进行偏移(不会影响之后的操作)
贝塞尔曲线 quadTo, cubicTo 分别为二次和三次贝塞尔曲线的方法
rXxx方法 rMoveTo, rLineTo, rQuadTo, rCubicTo 不带r的方法是基于原点的坐标系(偏移量), rXxx方法是基于当前点坐标系(偏移量)
填充模式 setFillType, getFillType, isInverseFillType, toggleInverseFillType 设置,获取,判断和切换填充模式
提示方法 incReserve 提示Path还有多少个点等待加入(这个方法貌似会让Path优化存储结构)
布尔操作(API19) op 对两个Path进行布尔运算(即取交集、并集等操作)
计算边界 computeBounds 计算Path的边界
重置路径 reset, rewind

清除Path中的内容

reset不保留内部数据结构,但会保留FillType.

rewind会保留内部的数据结构,但不保留FillType

矩阵操作 transform 矩阵变换

一、Path方法详解

网络测速全解析之一:自定义View基础知识(五)

就是说使用rXxx这样的方法,就相当于在之前的坐标的基础上移动了相应的x值和y值。而不带r的这种,就是参考之前的坐标系的一个点。

网络测速全解析之一:自定义View基础知识(五)网络测速全解析之一:自定义View基础知识(五)

Xxx                                                              rXxx

 

填充模式:描边、填充、描边+填充

判断是否是图形内部方法:奇偶规则、非零环绕数规则

网络测速全解析之一:自定义View基础知识(五)

图示:

网络测速全解析之一:自定义View基础知识(五)

 

网络测速全解析之一:自定义View基础知识(五)

网络测速全解析之一:自定义View基础知识(五)

网络测速全解析之一:自定义View基础知识(五)

 

Android中的填充模式

Android中的填充模式有四种,是封装在Path中的一个枚举。

模式 简介
EVEN_ODD 奇偶规则
INVERSE_EVEN_ODD 反奇偶规则
WINDING 非零环绕数规则
INVERSE_WINDING 反非零环绕数规则

 

只需要记住反非零环绕数规则效果

网络测速全解析之一:自定义View基础知识(五)

 

布尔操作(op):

网络测速全解析之一:自定义View基础知识(五)

布尔操作是两个Path之间的运算,主要作用是用一些简单的图形通过一些规则合成一些相对比较复杂,或难以直接得到的图形。

Path的布尔运算有五种逻辑,如下:

逻辑名称 类比 说明 示意图
DIFFERENCE 差集 Path1中减去Path2后剩下的部分 网络测速全解析之一:自定义View基础知识(五)
REVERSE_DIFFERENCE 差集 Path2中减去Path1后剩下的部分 网络测速全解析之一:自定义View基础知识(五)
INTERSECT 交集 Path1与Path2相交的部分 网络测速全解析之一:自定义View基础知识(五)
UNION 并集 包含全部Path1和Path2 网络测速全解析之一:自定义View基础知识(五)
XOR 异或 包含Path1与Path2但不包括两者相交的部分 网络测速全解析之一:自定义View基础知识(五)

 

重置路径

重置Path有两个方法,分别是reset和rewind,两者区别主要有一下两点:

方法 是否保留FillType设置 是否保留原有数据结构
reset
rewind

网络测速全解析之一:自定义View基础知识(五)

显然,显示更加重要一些~