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
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 に答える
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 に答える