水平圆圈上的文字

时间:2012-04-21 13:26:15

标签: android

你好我想在圆圈周围放置几个文字,但不想旋转它,文本应该是水平的,就像速度计一样。旋转画布或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);
    }

2 个答案:

答案 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);
}