Как показать круговой текст с помощью TextView в Android
Я хочу показать текст с круговой формой в приложении для Android. Я знаю, что это делается с помощью custome textview, но может кто-то приятель дать мне правильный код. Я также прикрепляю изображение, тип которого я хочу.
![enter image description here]()
Ответы
Ответ 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]()