Android PathDashPathEffect:路径形状不适用于直线

时间:2017-05-02 22:12:14

标签: android android-custom-view paint android-paint

我正在尝试构建一个自定义视图,绘制一条带有斜条纹图案的线条。它看起来应该类似于:

enter image description here

我认为使用PathDashPathEffect应该这样做,但是当我将路径形状设置为直线路径时,视图不会绘制任何内容。如果我向路径添加更多段以便它可以关闭,例如将其设为三角形,则视图会显示。

这是我的道路形状:

    Path pathShape = new Path();
    pathShape.moveTo(0, 10);
    pathShape.lineTo(10, 0);

以上不起作用,视图没有显示任何内容。以下工作并将三角形显示为线条上的图案:

    Path pathShape = new Path();
    pathShape.moveTo(0, 0);
    pathShape.lineTo(10, 10);
    pathShape.lineTo(10, 0);

我的整个自定义视图:

private final Paint paint;
private final Path path;

public MyView(Context context, AttributeSet attrs) {
    super(context, attrs);
    paint = new Paint();
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeWidth(20);
    paint.setColor(Color.RED);
    Path pathShape = new Path();
    pathShape.moveTo(0, 0);
    pathShape.lineTo(10, 10);
    pathShape.lineTo(10, 0);
    PathDashPathEffect pathEffect = new PathDashPathEffect(pathShape, 30, 30, PathDashPathEffect.Style.ROTATE);
    paint.setPathEffect(pathEffect);
    path = new Path();
}

@Override
protected void onDraw(Canvas canvas) {
    path.reset();
    path.moveTo(0, getHeight() / 2);
    path.lineTo(getWidth(), getHeight() / 2);
    canvas.drawPath(path, paint);
}

有谁知道如何实现这一目标?

非常感谢!

1 个答案:

答案 0 :(得分:1)

最终,我通过将Path更改为除Path之外的其他形状来实现此目的。我把形状做成了一个宽度为1的倾斜矩形,并且工作正常。所以我猜想经验教训:如果PathEffect是一个未关闭的Path,则PathDashPathEffect不起作用。