Android PathDashPathEffect: форма контура не работает для прямой линии

Я пытаюсь создать собственный вид, который рисует линию с узором диагональных полос. Это должно выглядеть примерно так:

Я думаю, что следует использовать 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 ответ

Решение

В конце концов я достиг этого, изменив Путь, чтобы он стал формой, закрывающей другой путь, чем Путь. Я сделал форму наклонным прямоугольником шириной 1, и это сработало. Поэтому я думаю, что извлеченные уроки: PathDashPathEffect не работает, если PathEffect - это не закрытый путь.

Другие вопросы по тегам