Android自定义控件开发入门与实战(6)路径动画,牛皮轰轰

PathMeasure(Path path,boolean forceClosed);

这两种方法都会涉及到的forceClosed是计算path是否闭合,但是path的闭合并不是由forceClosed控制,绘制出来时,path该闭合还是闭合,不闭合就是不闭合,但是如果forceClosed设置为true时,会当做path闭合,把闭合的路径算进去。

一些简单的函数使用

1、getLength()

public float getLength()

该函数的作用为计算路径长度,使用非常广泛。

我们用路径来画一个没有闭合的正方形:

canvas.translate(50, 50);

Path path = new Path();

path.moveTo(0, 0);

path.lineTo(0, 100);

path.lineTo(100, 100);

path.lineTo(100, 0);

PathMeasure pathMeasure1 = new PathMeasure(path, false);

PathMeasure pathMeasure2 = new PathMeasure(path, true);

Log.e(TAG, "forceClose = false : " + pathMeasure1.getLength());

Log.e(TAG, "forceClose = true : " + pathMeasure2.getLength());

canvas.drawPath(path,paint);

在这里插入图片描述

打出的第一个Log长度为300,而第二个则为400.因为第二个已经考虑到闭合了。

2、isClose()

判断测量的path是否闭合。

如果PathMeasurei的forceClosed设置为true时,则isClosed()一定为true

3、nextContour()

Path可以有很多曲线、线段构成,但是getLength()只会取第一条线进行计算。

而nextContour()是跳转到下一条曲线的函数。如果跳转成功则返回true,否则返回false。

注:pathMeasure.getLength()只针对第一条曲线

getSegment

用法

boolean getSegment(float startD,float stopD,Path dst,boolean startWithMoveTo);

顾名思义,这个函数用截取一个P

你可能感兴趣的:(程序员,架构,移动开发,android)