自定义视图 - 圆周上的数字和字母
Custom View - digits and alphabets on the circumference of a circle
任何人都可以向我解释这种行为的原因是什么吗?
问题是,从“关闭”到“2”始终显示完美,超出了我给出的半径。
半径比圆的半径+35。
现在当我写数字时,随着数字的下降,它开始变得混乱。
并且就字母而言,它触及边缘并与它重叠。
谁能告诉我这是什么原因?因为半径总是大于当前圆的半径,所以字母表应该类似于“off”。
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 度就开始变得混乱,随着度数的增加,它不断增加半径 space。
在此处说明...我想知道是什么导致了这种行为,或者只是解释其背后的原因/数学。谢谢
从评论看来您正在遵循此代码实验室代码https://github.com/google-developer-training/android-advanced/tree/master/CustomFanController
你只需要考虑文字的上升和体面。所以在圆的圆周上画数字
val yPos = (pointPosition.y - (paint.descent() + paint.ascent()) / 2).toInt()
canvas.drawText(label, pointPosition.x, yPos.toFloat(), paint)
以上是根据Android Center text on canvas
这确实在正确的位置绘制了文本,但如果文本太大,它就会重叠
任何人都可以向我解释这种行为的原因是什么吗?
问题是,从“关闭”到“2”始终显示完美,超出了我给出的半径。 半径比圆的半径+35。
现在当我写数字时,随着数字的下降,它开始变得混乱。
并且就字母而言,它触及边缘并与它重叠。
谁能告诉我这是什么原因?因为半径总是大于当前圆的半径,所以字母表应该类似于“off”。
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 度就开始变得混乱,随着度数的增加,它不断增加半径 space。
在此处说明...我想知道是什么导致了这种行为,或者只是解释其背后的原因/数学。谢谢
从评论看来您正在遵循此代码实验室代码https://github.com/google-developer-training/android-advanced/tree/master/CustomFanController
你只需要考虑文字的上升和体面。所以在圆的圆周上画数字
val yPos = (pointPosition.y - (paint.descent() + paint.ascent()) / 2).toInt()
canvas.drawText(label, pointPosition.x, yPos.toFloat(), paint)
以上是根据Android Center text on canvas
这确实在正确的位置绘制了文本,但如果文本太大,它就会重叠