Я пытаюсь создать собственное представление, которое отображает циферблат с цифрами 1-10 вокруг него. Я использую тригонометрию, чтобы найти позиции X и Y для номеров циферблата. У меня нет проблем с поиском позиций вокруг круга, но я не могу выровнять их дальше по направлению к центру циферблата. Посмотрите на номер 6, например, я просто хочу, чтобы он был немного выше толстой белой отметки.
Я пробовал варианты "сокращения радиуса".
val diameter = Math.min(width, height)
val radius = diameter / 2
val distance = radius * 0.20f //20% of radius
А затем вычтите «расстояние» из радиуса, чтобы найти там позиции X и Y, а затем добавьте числа на этих позициях без удачи.
Ниже приведен код, который вычисляет позиции X и Y и добавляет числа, отображаемые на скриншоте набора.
for (i in 1..10) {
canvas?.drawText(i.toString(),cx.toFloat() +
(Math.cos(Math.toRadians(degrees.getInt(feetNumber,0).toDouble())).toFloat()) *
radius - (paint.measureText(i.toString()) / 2),
cy.toFloat() +
(Math.sin(Math.toRadians(degrees.getInt(feetNumber,0).toDouble())).toFloat()) *
radius + (paint.measureText(i.toString()) / 2), paint)
feetNumber++;
}
Я добавил градусы в файл ресурсов массива.
<resources>
<array
name="degrees">
<item>270</item>
<item>306</item>
<item>342</item>
<item>18</item>
<item>54</item>
<item>90</item>
<item>126</item>
<item>162</item>
<item>198</item>
<item>234</item>
</array>
</resources>
Буду очень признателен, если кто-нибудь поможет мне понять, как нарисовать цифры через короткий интервал после жирных отметок, где вы обычно находите цифры на циферблате.