你好我想在圆圈周围放置几个文字,但不想旋转它,文本应该是水平的,就像速度计一样。旋转画布或TextOnPath旋转文本,因此它不是水平的。
我如何在Android中执行此操作?
for (int i = minValue; i <= maxValue; ++i) {
float y1 = scaleRect.top;
float y2 = y1 - 0.020f;
canvas.drawLine(0.5f, y1, 0.5f, y2, scalePaint);
if (i%2==0) {
String valueString = Integer.toString(i);
canvas.drawText(valueString, 0.5f, y2 - 0.015f, scalePaint);
}
canvas.rotate(degreesPerNick, 0.5f, 0.5f);
}
答案 0 :(得分:0)
您需要为此制作自定义视图。在onDraw方法中,创建一个路径对象,向该对象添加圆圈,然后使用Canvas Object在该路径上绘制文本。
Path path = new Path();
path.addCircle(x, y, radius, Path.Direction.CW);
myCanvas.drawTextOnPath(myText, path, offset, 0, myPaint);
更新:::
只需创建一个像这样的圆形绘图
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<corners android:radius="10dip"/>
<stroke android:color="@color/red" android:width="2dip"/>
<solid android:color="@android:color/transparent"/>
</shape>
并将此drawable设置为TextView背景。
答案 1 :(得分:0)
int n = 10; // Anzahl Werte
float r = 0.28f; // Radius Kreis
for (int i = 0; i < (n); i++)
{
double fi = -2*Math.PI*i/n;
double x = r*Math.sin(fi + Math.PI) + 0.5f;
double y = r*Math.cos(fi + Math.PI) + 0.52f;
canvas.drawText(i+"", (float)x,(float)y , scalePaint);
}