Android中简单的绘图canvas都已经提供了基本的api,而复杂的几何图形一般是借助Path来实现的,因为Path可以将多个步骤拼凑成一个连贯的图形。
如果想对Path做动画之类或获取某位置上的信息时,当然可以自己计算,而PathMeasure已经做了,相当于是Path的一个工具类。
PathMeasure 使用:
-
关联Path
要想获取Path的信息,首先要关联上对应的Path。 -
PathMeasure(Path path, boolean forceClosed)
-
setPath(Path path, boolean forceClosed)
这两种方式均可
forceClosed是指计算Path信息的时候,是否按照一个封闭的Path来计算,这里只是计算会考虑,不会对原有的Path进行修改。
比如正常未封闭的Path长度为800,强制封闭后,获取Path的长度可能是1000 -
获取Path的长度
getLength() -
获取下一段Path
boolean nextContour()
由于Path中可能是有多段Path组合而成的,如果大圆里面有一个小圆。nextContour会按照添加到Path的顺序来获取下一段Path。
可通过返回值判断是否是最后一段 -
截取Path中的某一段
boolean getSegment(float startD, float stopD, Path dst, boolean startWithMoveTo)
startD 开始的距离
stopD 结束的距离
dst 返回到Path片段
startWithMoveTo 是否片段的第一个点事MoveTo操作
注意:
- 0<=startD<stopD<getLength()
- dst中如果已经有其他路径,不会被覆盖,而是继续今天到后面的
- startWithMoveTo则是对path添加的时候是否做移动处理,还是接着直接原有的Path直接画
-
以数值的形式获取Path中某距离上的位置和正切信息
boolean getPosTan(float distance, float[] pos, float[] tan)
distance 距离
pos 位置的x,y
tan 正切的对边与邻边 -
以矩阵的的形式获取Path的某距离上的位置和正切信息
boolean getMatrix(float distance, Matrix matrix, int flags)
distance 距离
matrix存放否Matrix
flags 获取哪一类信息,可以用|组合来获取两者的信息
PathMeasure.TANGENT_MATRIX_FLAG
PathMeasure.POSITION_MATRIX_FLAG
网友评论