0

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

2 回答 2

0

您需要为此制作自定义视图。在 onDraw 方法中,创建一个路径对象,向该对象添加圆形,然后使用 Canvas 对象在该路径上绘制文本。

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>

并将此可绘制对象设置为您的 TextView 背景。

于 2012-04-21T13:30:37.743 回答
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);
}
于 2012-04-22T08:51:33.047 回答