如何在Android中以圆形模式将文本绘制到视图上

5
我希望能够通过编程的方式在圆形或半圆形中添加文本,使得边缘不是线条而是单词。请看下图更好地了解。

text circle

我该如何在Android上实现这个功能,或者有哪些资源可以帮助我解决这个问题?


它会帮助你:http://mindtherobot.com/blog/272/android-custom-ui-making-a-vintage-thermometer/ - Mohsin Naeem
一个强大的工具:http://developer.android.com/reference/android/graphics/Path.html - Mohsin Naeem
2个回答

2
为了实现这个目标,您需要将文本绘制到一个 Canvas 上。任何 View 的子类在 onDraw() 中都会传入一个 Canvas,您可以使用它来绘制自定义文本。方法 drawTextOnPath() 可以让您将文本放在任何您选择的 Path 对象上。您可以通过创建一个新实例并使用 addArc() 来创建一个半圆形路径。

1

您可以使用以下代码,根据您的需要设置文本视图。如果想将背景图片设置为某个图像,则可以使用 setBackgroundResource(R.drawable.YOUR_IMAGE);

  public class MainActivity extends Activity {
          @Override
        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
           setContentView(new GraphicsView(this));}

      static public class GraphicsView extends View {
         private static final String QUOTE = "text in a half-circle";
         private Path circle;
         private Paint cPaint;
         private Paint tPaint;

     public GraphicsView(Context context) {
      super(context);

      int color = Color.argb(127, 255, 0, 255);

      circle = new Path();
      circle.addCircle(230, 350, 150, Direction.CW);

      cPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
      cPaint.setStyle(Paint.Style.STROKE);
      cPaint.setColor(Color.LTGRAY);
      cPaint.setStrokeWidth(3);

      // For Background Image
     setBackgroundResource(R.drawable.YOUR_IMAGE);

      tPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
      tPaint.setStyle(Paint.Style.FILL_AND_STROKE);
     //TextColor you want to set
      tPaint.setColor(Color.BLACK);
      //TextSize you want to set
      tPaint.setTextSize(50);}


      @Override
         protected void onDraw(Canvas canvas) {
         canvas.drawTextOnPath(QUOTE, circle, 485, 20, tPaint);} 
                                            } 
}

试一下,希望能对您有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接