Вам нужно n тире плюс n пробелов, чтобы иметь ту же общую длину, что и окружность круга.В приведенном ниже коде предполагается, что вы правильно определили точку center
и radius
, которые хотите использовать.
double circumference = 2 * Math.PI * radius;
float dashPlusGapSize = (float) (circumference / NUM_DASHES);
intervals[0] = dashPlusGapSize * DASH_PORTION;
intervals[1] = dashPlusGapSize * GAP_PORTION;
DashPathEffect effect = new DashPathEffect(intervals, 0);
paint.setPathEffect(effect);
canvas.drawCircle(center, center, radius, paint);
Например, я использовал NUM_DASHES = 20
, DASH_PORTION = 0.75f
иGAP_PORTION = 0.25f
, и я вижу:
Вы можете использовать разные значения для этих констант, чтобы изменить количество штрихов, в которое вы нарезаете цикл, или какбольшие тире / разрыв относительно друг друга (до тех пор, пока DASH_PORTION
+ GAP_PORTION
складывается до 1
).