5

我想以编程方式在圆形或半圆形中添加文本,以这样的方式,而不是有一个带有线条边缘的圆形,边缘就是单词。查看图片以获得更好的解释。

文字圈

我如何在 Android 中做到这一点,或者我可以阅读哪些资源来帮助我解决这个问题?

4

2 回答 2

2

为此,您需要将文本绘制到Canvas. 的任何子类都View被传入CanvasonDraw()您可以使用它来绘制自定义文本。该方法drawTextOnPath()允许您将文本放在Path您选择的任何对象上。您可以通过创建新实例并使用addArc().

于 2012-12-01T04:47:06.780 回答
1

你可以使用下面的代码。并按照您想要的 Textview 进行制作。在这里,如果您想要某物作为背景图像,请使用 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);} 
                                            } 
}

试试看。希望它会帮助你。

于 2012-12-01T05:30:50.453 回答