目录
PathMeasure(Path originalPath ,boolean forceClosed);
getSegment(float startD,float stopD,Path dst,bolean startWithMoveTo)
getPosTan(float distance, float[] pos ,float[] tan)
getMatrix(float distance,Matrix matrix,int flags)
API
总结:
1.PathMeasure 字面理解是path测量 ,因此很容易联想到:和path 有关 。
简单函数:
PathMeasure(Path originalPath ,boolean forceClosed);
originalPath :被操作path
forceClosed:如果forceClosed=true,即时originalPath 没有闭合,按闭合处理(eg:获取长度 等) 注:forceClosed 取值不会对originalPath产生影响。
getLength()
计算path(当前曲线)的长度 (当 forceClosed=true,如果originalPath 没有闭合,等价于求它闭合时的长度)
isClosed()
判断originalPath 是否闭合
nextContour()
originalPath 可以由多条曲线构成,不论getLength() , getSegment() 还是其他函数 都只会针对其种第一条线段进行计算 。nexttContour() => 用户跳转到下一条曲线的函数
重要函数(动画需要使用)
getSegment(float startD,float stopD,Path dst,bolean startWithMoveTo)
通过距离起点(左上角)的开始距离(startD), 到距离起点的结束距离(stopD) ,按照路径生成的方向(CW/CCW)截取, 生成了新的dstPath。
startWithMoveTo :dstPath 有可能,在没操作(pathMeasure.getSegment(..))的时候已经有了path1, startWithMoveTo表示path1 的终点是否要和 dstPath 的起点连接起来(这样会把两段path 变成连续的)。
getPosTan(float distance, float[] pos ,float[] tan)
获取距离Path 起点长度为distance 的切点的坐标 (pos[0],pos[1]) 和正切值 tan[1]/tan[2]
(已知 distance ,可以得到后面两个数组)
getMatrix(float distance,Matrix matrix,int flags)
用户获取路劲某一长度的位置 以及该位置的正切矩阵 matrix(用于动画的旋转 ,后面我会实战)。
flags:pathMeasure.POSITION_MATRIX_FLAG:位置信息
pathMeasure.TANGENT_MATRIX_FLAG:获取切边信息, 以上两个标准可以 “| ” 连接 ,一起使用