Próbuję opracować prostą klasę wykresu kołowego dla Androida. Na razie może wykonać mapę etykiet i wartości oraz narysować wykres kołowy. Mam jeszcze dodać legendy do ciasta, w którym muszę umieścić tekst w pobliżu małych prostokątów na rogu ekranu. Każda pomoc doceniona, ponieważ jestem nowy w systemie Android.Jak narysować tekst na płótnie?
Odpowiedz
Będziesz musiał użyć metody drawText klasy Canvas.
Paint paint = new Paint();
canvas.drawPaint(paint);
paint.setColor(Color.BLACK);
paint.setTextSize(16);
canvas.drawText("My Text", x, y, paint);
Oto odpowiednią dokumentację o tym:
Innym (zapewne lepiej) sposobem rysowania tekstu na płótnie jest użycie StaticLayout
. W razie potrzeby obsługuje tekst wielowierszowy.
String text = "This is some text.";
TextPaint textPaint = new TextPaint();
textPaint.setAntiAlias(true);
textPaint.setTextSize(16 * getResources().getDisplayMetrics().density);
textPaint.setColor(0xFF000000);
int width = (int) textPaint.measureText(text);
StaticLayout staticLayout = new StaticLayout(text, textPaint, (int) width, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0, false);
staticLayout.draw(canvas);
TextPaint
i StaticLayout
zostały instancja tuż przed wykorzystywane są tutaj ze względu na ilustracji. Jednak zrobienie tego w onDraw
może zaszkodzić wydajności. Here is a better example pokazano je w kontekście niestandardowego widoku, który rysuje własny tekst.
Nie było innej odpowiedzi tutaj, która została usunięta, ponieważ był tylko link. Oryginalny link to here. Kod jest w zasadzie taki sam, ale wyjąłem nierysujące fragmenty rysunku, a także zwiększyłem rozmiary, aby lepiej działały na nowoczesnych gęstościach ekranu.
To pokazuje tylko kilka rzeczy, które można zrobić z rysowaniem tekstu.
Oto zaktualizowany kod:
public class MainActivity extends AppCompatActivity {
DemoView demoview;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
demoview = new DemoView(this);
setContentView(demoview);
}
private class DemoView extends View {
public DemoView(Context context){
super(context);
}
@Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// custom drawing code here
// remember: y increases from top to bottom
// x increases from left to right
int x = 0;
int y = 0;
Paint paint = new Paint();
paint.setStyle(Paint.Style.FILL);
canvas.save();
canvas.translate(100, 200);
// make the entire canvas white
canvas.drawColor(Color.WHITE);
// draw some text using STROKE style
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(1);
paint.setColor(Color.MAGENTA);
paint.setTextSize(100);
canvas.drawText("Style.STROKE", 0, 0, paint);
canvas.translate(0, 200);
// draw some text using FILL style
paint.setStyle(Paint.Style.FILL);
//turn antialiasing on
paint.setAntiAlias(true);
//paint.setTextSize(30);
canvas.drawText("Style.FILL", 0, 0, paint);
canvas.translate(0, 200);
// draw some rotated text
// get text width and height
// set desired drawing location
x = 75;
y = 185;
paint.setColor(Color.GRAY);
//paint.setTextSize(25);
String str2rotate = "Rotated!";
// draw bounding rect before rotating text
Rect rect = new Rect();
paint.getTextBounds(str2rotate, 0, str2rotate.length(), rect);
canvas.translate(x, y);
paint.setStyle(Paint.Style.FILL);
// draw unrotated text
canvas.drawText("!Rotated", 0, 0, paint);
paint.setStyle(Paint.Style.STROKE);
canvas.drawRect(rect, paint);
// undo the translate
canvas.translate(-x, -y);
// rotate the canvas on center of the text to draw
canvas.rotate(-45, x + rect.exactCenterX(),
y + rect.exactCenterY());
// draw the rotated text
paint.setStyle(Paint.Style.FILL);
canvas.drawText(str2rotate, x, y, paint);
//undo the translation and rotation
canvas.restore();
}
}
}
Coś innego, że chcę spróbować później jest drawing text along a path.
Zobacz także this fuller answer here, który daje następujący obraz.
- 1. Jak narysować linię siatki na płótnie WPF?
- 2. android jak narysować bitmapę na półprzezroczystym płótnie
- 3. Niepoprawny tekst na płótnie
- 4. Jak narysować gładką owalny płótnie
- 5. Jak narysować tekst na obrazku?
- 6. wygładzony duży tekst na płótnie
- 7. CoreGraphics narysować obraz na białym płótnie
- 8. Jak narysować wzór na płótnie na palcu przeciągając
- 9. Jak pisać wyśrodkowany tekst wielobarwny na płótnie?
- 10. Jak dodać obramowanie na płótnie HTML5 "Tekst?
- 11. Jak narysować pogrubiony tekst na bitmapie?
- 12. Jak narysować tekst z innym formatowaniem czcionki na płótnie w delphi naraz?
- 13. Jak zrobić dowolny widok, aby narysować na płótnie?
- 14. Element Angular2 oparty na płótnie: jak narysować wnętrze?
- 15. HTML5 jak narysować przezroczysty obraz piksela na płótnie
- 16. Rysowanie tekstu na płótnie
- 17. Rysowalny obraz na płótnie
- 18. Tekst pionowy w płótnie Tkinter
- 19. iPhone: jak narysować tekst w oknie?
- 20. iPhone - Jak narysować tekst w środku prostego
- 21. Rysunek SVG na płótnie Kivy
- 22. D3D11: Jak narysować tekst GDI na powierzchni GXDI? (Bez D2D)
- 23. Jak narysować tekst z obramowaniem na MapView w systemie Android?
- 24. Jak narysować tekst na pustym MS Chart ChartArea?
- 25. Rysowanie na płótnie% element
- 26. Rysuj strzałkę na płótnie tag
- 27. Rysuj linię kreskową na płótnie
- 28. Narysuj cienie elewacji na płótnie
- 29. Narysuj skalowaną bitmapę na płótnie?
- 30. wyraźna linia na płótnie HTML5