Android:差异操作后不显示路径

Android:差异操作后不显示路径,android,path,Android,Path,您好,我是Android dev的新手,在第一次尝试时,我面临一个pbm 我有一个“球”沿着一条路径。 这部分代码正常(球沿着路径)。 但在我改变路径后,它不再显示 路径似乎是正常的,因为“球”沿着正确的路径。 但是我看不到 下面是代码的摘要 void init() { paint = new Paint(); paint.setAntiAlias(true); paint.setStrokeWidth(1f); paint.setColor(Color.WHI

您好,我是Android dev的新手,在第一次尝试时,我面临一个pbm

我有一个“球”沿着一条路径。 这部分代码正常(球沿着路径)。 但在我改变路径后,它不再显示

路径似乎是正常的,因为“球”沿着正确的路径。 但是我看不到

下面是代码的摘要

void init() {
    paint = new Paint();

    paint.setAntiAlias(true);
    paint.setStrokeWidth(1f);
    paint.setColor(Color.WHITE);
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeJoin(Paint.Join.ROUND);      
    paint.setTextSize(40);

    pathBall = new Path();
    pathBall.moveTo(0, 0);
    pathBall.lineTo(300, 0);
    pathBall.lineTo(300, 300);
    pathBall.lineTo(0, 300);
    pathBall.close();

    measure = new PathMeasure(pathBall, true);
    length = measure.getLength();
}

@Override
protected void onDraw(Canvas canvas) {
    canvas.drawPath(pathBall, paint);
    canvas.drawCircle(matrix[0], matrix[1], 5, paint);
}


void addPath() {
    Path path = new Path();
    path.moveTo(50, 0);
    path.lineTo(50, 100);
    path.lineTo(100, 100);
    path.lineTo(100, 0);
    path.close();

    Region region1 = new Region();
    region1.setPath(pathBall, clip);

    Region region2 = new Region();
    region2.setPath(path, clip);

    region1.op(region2, Op.DIFFERENCE);

    pathBall = region1.getBoundaryPath();

    measure.setPath(pathBall, true);
    length = measure.getLength();
}
在一个循环中,我将执行以下操作来重新调整球的位置:

while (keepDrawing) {
    pos += 5;
    if (pos > length) {
        pos = (int)(pos - length);
        addPath();     // To change path when 1 turn is done by the ball
    }

    measure.getPosTan(pos, matrix, null);

    postInvalidate();

    try {
        Thread.sleep(20);
    } catch (InterruptedException e) {
        // ...
    }
}
我不明白为什么我的路径是正确的,但不再显示。
有人有主意吗?

我终于找到了解决办法。 我不明白为什么,但现在它起作用了。 我只是在路径球中添加了一个close():

pathBall = region1.getBoundaryPath();
pathBall.close();