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

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

 Rishabh Agrawal31 окт. 2012 г., 08:50
извините, но показать полный текст в цикле.
 Kartik Domadiya31 окт. 2012 г., 08:54
Вы должны понимать это и изменять его в соответствии со своими потребностями.
 Kartik Domadiya31 окт. 2012 г., 08:48

Ответы на вопрос(7)

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

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 :) надеюсь, это поможет

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

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

 Kenny Seyffarth18 мар. 2016 г., 12:49
Это вопрос в зависимости от Android, а также способ сделать это в коде, а не с типом лица.
 Yahor1031 окт. 2012 г., 08:48
Смотрите мои обновления с картинкой
 Rishabh Agrawal31 окт. 2012 г., 08:49
дорогой, я хочу показать этот стиль во время выполнения. Я также мог бы использовать этот стиль с изображениями. Но я никогда не хочу его.
 Rishabh Agrawal31 окт. 2012 г., 08:40
извини, чувак, это невозможно с типом face, потому что тип face дает тебе стиль текста, а не форму дуги.

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

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

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

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

Path path = new Path();
path.addCircle(x, y, radius, Path.Direction.CW);
myCanvas.drawTextOnPath(myText, path, offset, 0, myPaint);
 Pinkesh Darji07 дек. 2017 г., 09:39
что такое х, у и путь, смещение здесь?

Создайте пользовательский вид и переопределите 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)

 Rishabh Agrawal31 окт. 2012 г., 20:10
 Rishabh Agrawal31 окт. 2012 г., 16:30
Я поместил эту треску в doDraw (), но ничего не показывало в screen canvas.save (); Путь пути = новый путь (); path.addCircle (-10, 10, 200, Path.Direction.CW); canvas.drawTextOnPath (»Привет", путь, -10, -10, ноль); super.onDraw (холст); canvas.restore ();»
 S.D.31 окт. 2012 г., 09:22
Кроме того, для multi-res, используйте основной drawable 's высота для расчета радиуса.
 Simon31 окт. 2012 г., 10:35
networketiquette.net/do_not_use_all_caps.htm  Теперь возобновим, чем занимаемсяне работает" имею в виду?
 Simon31 окт. 2012 г., 17:38
Я положил эту треску в doDraw () " doDraw или onDraw? Вы также добавили круг за пределами представления. х = -10 и текст вне пути. Пожалуйста, отредактируйте ваш вопрос с помощью метода onDraw.

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

 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);} 
                                        } }

вывод будет:

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

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

Пример "Графика / выравнивание текста " (файл TextAlign.java) показывает, как отображать текст вдоль пути:

Затем вы можете настроить его, чтобы построить свой экран.

 azurh08 дек. 2016 г., 16:24
 AndroidGuy25 мар. 2013 г., 21:57
Спасибо за включение изображения из примеров API. Это экономит время, необходимое для создания и запуска проекта.

Ваш ответ на вопрос