Как нарисовать линию в конце дуги? - PullRequest
0 голосов
/ 04 апреля 2019

Как нарисовать линию в конце дуги, например, так?

example image

Вот код, который я сейчас использую для рисования дуги

    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
        canvasWidth = MeasureSpec.getSize(widthMeasureSpec);
        canvasHeight = MeasureSpec.getSize(heightMeasureSpec);
        padding = strokeWidth * 0.9f;
        arcAngle = 360 * 0.8f;
        rectF.set(padding, padding, canvasWidth - padding, canvasHeight - padding);
        arcRadius = (canvasWidth - padding) / 2f;
        arcBottomHeight = arcRadius * (float) (1 - Math.cos(angle / 180 * Math.PI));
    }
protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        float startAngle = 270 - arcAngle / 2f;
        float finishedSweepAngle = progress / (float) getMax() * arcAngle;
        float finishedStartAngle = startAngle;

        canvas.drawArc(rectF, startAngle, arcAngle, false, unfinishedPaint);
        canvas.drawArc(rectF, finishedStartAngle, finishedSweepAngle, false, finishedPaint);
}

Это рисует 2 дуги друг над другом, с цветной дугой (FinishedPaint), представляющей прогресс.

Я хочу использовать canvas.drawLine (), чтобы нарисовать линию наконец дуги, но я не уверен, как получить координаты, чтобы указать начальную и конечную координаты линии.

1 Ответ

1 голос
/ 04 апреля 2019

Используйте триг. Вы знаете радиус дуги и угол, под которым она заканчивается. Х radius*sin(endangle)+xcenter, у radius*cos(endangle)+ycenter. Затем нарисуйте линию под тем же углом, где он лежит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...