Это просто требует немного математики с вашей стороны.Закругленные колпачки обводки, которые добавляются к линии, имеют ширину / длину, равную половине обводки краски.
Вот мой код:
Paint linePaint = new Paint();
Paint noCaplinePaint = new Paint();
public void init(){
linePaint.setColor(this.getResources().getColor(android.R.color.black));
linePaint.setStyle(Paint.Style.FILL_AND_STROKE);
linePaint.setStrokeWidth(40f);
linePaint.setStrokeCap(Paint.Cap.ROUND);
noCaplinePaint.setColor(this.getResources().getColor(android.R.color.black));
noCaplinePaint.setStyle(Paint.Style.FILL_AND_STROKE);
noCaplinePaint.setStrokeWidth(40f);
}
И затем в onDraw
:
canvas.drawLine(50f, 40f, 300f, 40f, noCaplinePaint);
canvas.drawLine(70f, 81f, 280f, 81f, linePaint);
Производит эти строки:
Итак, для обзора, размер закругленной линии крышки можетрассчитывается следующим образом:
additionalLengthFromRoundCap = lineStrokeWidth/2
, и этот предел будет добавлен к обоим концам линии, поэтому линия будет на strokeWidth
единицы длиннее, чем нарисовано.