自定义视图 - 圆周上的数字和字母

问题描述

谁能向我解释这种行为的原因是什么?

enter image description here

enter image description here

问题是,从“off”到“2”总是完美地显示在我给定的半径之上。 半径是圆半径的 +35。

现在当我写数字时,随着数字的下降,它开始变得混乱。

就字母而言,它接触边缘并重叠。

谁能告诉我这是什么原因?因为半径总是大于当前圆的半径,所以字母应该类似于“关闭”。

xy 点的计算...

// Angles are in radians.
   val startAngle = Math.PI * (9 / 8.0)   
   val angle = startAngle + pos.ordinal * (Math.PI / 4)
   x = (radius * cos(angle)).toFloat() + width / 2
   y = (radius * sin(angle)).toFloat() + height / 2

我玩弄了度数,似乎越接近 0 度数就开始混乱,随着度数的增加,它不断增加半径的空间。

enter image description here

在这里说明...我想知道是什么导致了这种行为,或者只是解释其背后的原因/数学。谢谢

解决方法

从评论看来您正在关注此代码实验室代码 https://github.com/google-developer-training/android-advanced/tree/master/CustomFanController

您只需要考虑文本上升和体面。所以在圆的圆周上画数字

null

以上基于Android Center text on canvas

这确实在正确的位置绘制了文本,但如果文本太大,它会重叠

enter image description here