2012-04-21 26 views
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); 
    } 

回答

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 2012-04-21 14:01:44

+0

已更新查看帖子 – 2012-04-21 14:04:02