经过一段时间的反复试验,我发现了如何开始一条“新”路径。事实上,我可以使用相同的路径。我放在问题中的代码只会删除 arraylist 中的所有值(我认为这是开始新路径的第一步)。虽然,出于某种原因,它甚至没有这样做。然而,我发现确实有效,只是使用 clear() 方法,如下所示:
points.clear();
虽然,正如我发现的那样,这并不能解决我的问题。它只删除先前绘制的路径。我需要做的是使用 moveTo() 方法,该方法将允许路径中断,创建看起来好像有多个路径。因此,每次我将手指从屏幕上移开 (ACTION_UP) 时,我都会将“points”数组列表的大小作为一个值添加到另一个数组列表中:
startValues.add(points.size());
这将为我提供调用 moveTo() 方法的索引值。现在,在 onDraw() 方法中,我添加了以下代码(查看我要求查看我正在使用的所有代码的问题中的链接):
boolean first = true;
for(int i = 0; i < points.size(); i++){
Point point = points.get(i);
for (int index = 0; index <= startValues.size() - 1; index++){
if (i == startValues.get(index)){
lineChange = true;
endNumber = (startValues.get(index) - 1);
break;
}
}
if(first || lineChange){
first = false;
lineChange = false;
path.moveTo(point.x, point.y);
}else{
Point prev = points.get(i - 1);
path.cubicTo(prev.x + prev.dx, prev.y + prev.dy, point.x - point.dx, point.y - point.dy, point.x, point.y);
}
}
canvas.drawPath(path, paint);
这样,在第一个点之前的路径中以及从我从屏幕上抬起手指的每个点上都会有中断,直到我再次将其放回原位。这解决了我在问这个问题时遇到的最初问题,但它导致了其他一些问题。例如,当我的手指更换到屏幕上时,一条线的起点和终点会发生变化。如果我自己找不到解决方案,我会在另一个问题中问这个问题。我希望这对面临类似问题的人有用!