2012-04-21 14 views
0

こんにちは私は円の周りにいくつかのテキストを配置したいが、それを回転させたくない、テキストはスピードメーターのように水平でなければならない。キャンバスまたはTextOnPathを回転させるとテキストが回転するので、水平ではありません。horizo​​ntal円上のテキスト

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
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); 
} 
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の背景として、この描画可能に設定する必要があります。

+0

ただし、すべてのテキストは水平である必要があります。 – user1318171

+0

更新 –

関連する問題