Подтвердить что ты не робот

Как показать круговой текст с помощью TextView в Android

Я хочу показать текст с круговой формой в приложении для Android. Я знаю, что это делается с помощью custome textview, но может кто-то приятель дать мне правильный код. Я также прикрепляю изображение, тип которого я хочу.

enter image description here

4b9b3361

Ответ 1

Вы можете попробовать этот проверенный и полный рабочий код:

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 = "This is a curved text";
        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);

            setBackgroundResource(R.drawable.heart);

            tPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
            tPaint.setStyle(Paint.Style.FILL_AND_STROKE);
            tPaint.setColor(Color.BLACK);
            tPaint.setTextSize(50);
        }
        @Override
        protected void onDraw(Canvas canvas) {
            canvas.drawTextOnPath(QUOTE, circle, 485, 20, tPaint);
        }
    }
}

вывод будет:

enter image description here

Надеюсь, это поможет.

Ответ 2

Создайте пользовательский вид и переопределите onDraw. В onDraw создайте путь и используйте drawTextOnPath. Что-то вроде этого. textToDraw - текст, который вы хотите отобразить. Краска - это то, что вы хотите.

@Override onDraw(Canvas canvas){
    Path path = new Path();
    path.addCircle(x, y, 200, Path.Direction.CW);
    canvas.drawTextOnPath(textToDraw, path, textX, textY, paint);
}

http://developer.android.com/training/custom-views/index.html http://developer.android.com/reference/android/graphics/Canvas.html#drawTextOnPath(java.lang.String, android.graphics.Path, float, float, android.graphics.Paint)

Ответ 3

Вы можете посмотреть исходный код APIDemo в комплекте с SDK android SDK в вашем каталоге SDK.

В примере "Graphics/Text Align" (файл TextAlign.java) показано, как отображать текст по пути: Screen capture of the path

Затем вы можете настроить его для создания экрана.

Ответ 4

Вы реализуете его с помощью пользовательских представлений, например, в методе onDraw:

Path path = new Path();
path.addCircle(x, y, radius, Path.Direction.CW);
myCanvas.drawTextOnPath(myText, path, offset, 0, myPaint);

Ответ 5

Вам нужно создать свой собственный объект "Просмотр", подобный этому

public class YourView extends View {
    private static final String YOUR_TEXT = "something cool";
    private Path _arc;

    private Paint _paintText;

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

      _arc = new Path();
      RectF oval = new RectF(50,100,200,250);;
      _arc.addArc(oval, -180, 200);
      _paintText = new Paint(Paint.ANTI_ALIAS_FLAG);
      _paintText.setStyle(Paint.Style.FILL_AND_STROKE);
      _paintText.setColor(Color.WHITE);
      _paintText.setTextSize(20f);

    }

    @Override
    protected void onDraw(Canvas canvas) {
      canvas.drawTextOnPath(YOUR_TEXT, _arc, 0, 20, _paintText);
      invalidate();
    }
}

а затем использовать его как свой TextView:) надеюсь, что эта помощь

Ответ 6

Попробуйте следующий код.

onDraw(Canvas canvas){
 Path path = new Path();
 path.addArc(oval, startAngle, sweepAngle) 
 path.addArc(oval, 0, 180) 
 }

Это может сработать...

Ответ 7

Вам не нужно делать пользовательский просмотр. Найдите правильный TypeFace, добавьте в свой проект и установите TextView

Или используйте текстовое искусство Microsoft Word и копируйте изображения в свой проект

enter image description here