如何在Android中以圆形图案将视图绘制到视图中

时间:2012-12-01 04:40:32

标签: android textview android-custom-view

我想以编程方式在圆圈或半圆圈中添加文字,这样的方式是不是使用带有边线的圆圈,而是边缘是单词。有关更好的解释,请参见图片。

text circle

如何在Android中执行此操作,或者我可以阅读哪些资源以帮助解决此问题?

2 个答案:

答案 0 :(得分:2)

为此,您需要将文字绘制到Canvas上。 View的任何子类都会在Canvas中传递onDraw(),您可以使用它来绘制自定义文本。方法drawTextOnPath()允许您将文本放在您选择的任何Path对象上。您可以通过创建新实例并使用addArc()来创建半圆路径。

答案 1 :(得分:1)

您可以使用以下代码。并按照您的要求制作Textview。 如果您想要Something as Backgroung图像,请使用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);} 
                                            } 
}

尝试一下。希望它会对你有所帮助。