PathMeasure是一个用来测量Path的类,主要有以下方法
构造方法
/**
* 创建一个空的pathMeasure
*/
PathMeasure()
/**
* 创建一个pathMeasure 并关联一个指定的path(path岁要创建完成)
*/
PathMeasure(Path path, boolean forceClosed)
公共方法
/**
* 关联一个Path
*/
void setPath(Path path, boolean forceClosed)
/**
* 是否闭合
*/
boolean isClosed()
/**
* 获取path长度
*/
float getLength()
/**
* 跳转到下一个轮廓
*/
boolean nextContour()
/**
* 截取片段
*/
boolean getSegment(float startD, float stopD, Path dst, boolean startWithMoveTo)
/**
* 获取指定长度的位置坐标及该店切线值tangle
*/
boolean getPosTan(float distance, float pos[], float tan[])
/**
* 获取指定长度的位置坐标及该点Matrix(矩阵)
*/
boolean getMatrix(float distance, Matrix matrix, int flags)
PathMeasure的方法也不多,接下来我们逐一讲解。
1.构造函数
- 无参构造函
PathMeasure()
用这个构造
用这个构造函数可创建一个空的 PathMeasure,但是使用之前需要先调用 setPath 方法来与 Path 进行关联。被关联的 Path 必须是已经创建好的,如果关联之后 Path 内容进行了更改,则需要使用 setPath 方法重新关联。
- 有参数的构造函数
PathMeasure(Path path, boolean forceClosed)
用这个构造函数是创建一个 PathMeasure 并关联一个 Path, 其实和创建一个空的 PathMeasure 后调用 setPath 进行关联效果是一样的,同样,被关联的 Path 也必须是已经创建好的,如果关联之后 Path 内容进行了更改,则需要使用 setPath 方法重新关联。
该方法有两个参数,第一个参数自然就是被关联的 Path 了,第二个参数是用来确保 Path 闭合,如果设置为 true, 则不论之前Path是否闭合,都会自动闭合该 Path(如果Path可以闭合的话)。
注意:1.不论 forceClosed 设置为何种状态(true 或者 false), 都不会影响原有Path的状态,即 Path 与 PathMeasure 关联之后,之前的的 Path 不会有任何改变。2.forceClosed 的设置状态可能会影响测量结果,如果 Path 未闭合但在与 PathMeasure 关联的时候设置 forceClosed 为 true 时,测量结果可能会比 Path 实际长度稍长一点,获取到到是该 Path 闭合时的状态。
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Path path1 = new Path();
path1.moveTo(195,195);
path1.lineTo(405,195);
path1.lineTo(405,405);
path1.lineTo(195,405);
canvas.drawPath(path1,p1);
Path path2 = new Path();
path2.moveTo(200,200);
path