Android
Måla
Sök…
Introduktion
En färg är ett av de fyra föremål som behövs för att rita, tillsammans med en duk (håller ritningssamtal), en bitmapp (håller pixlarna) och en ritningsprimitiv (Rect, Path, Bitmap ...)
Skapa en färg
Du kan skapa en ny färg med en av dessa tre konstruktörer:
-
new Paint()
Skapa med standardinställningar -
new Paint(int flags)
Skapa med flaggor -
new Paint(Paint from)
Kopiera inställningar från en annan färg
Det föreslås vanligtvis att du aldrig skapar ett färgobjekt eller något annat objekt i onDraw () eftersom det kan leda till prestandaproblem. (Android Studio kommer förmodligen att varna dig) Gör det istället globalt och initiera det i din klasskonstruktör så:
public class CustomView extends View {
private Paint paint;
public CustomView(Context context) {
super(context);
paint = new Paint();
//...
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setColor(0xFF000000);
// ...
}
}
Ställa in färg för text
Inställningar för textritning
-
setTypeface(Typeface typeface)
Ställ in teckensnittytan. Se typsnitt -
setTextSize(int size)
Ställ in teckenstorlek, i pixlar. -
setColor(int color)
Ställ in färgfärgen, inklusive textfärgen. Du kan också användasetARGB(int a, int r, int g, int b
ochsetAlpha(int alpha)
-
setLetterSpacing(float size)
Ställ in avståndet mellan tecken, i ems. Standardvärdet är 0, ett negativt värde kommer att dra åt texten, medan ett positivt värde kommer att expandera det. -
setTextAlign(Paint.Align align)
Ställ in textjustering relativt dess ursprung.Paint.Align.LEFT
drar det till höger om ursprunget,RIGHT
kommer att rita det till vänster ochCENTER
kommer att rita det centrerat på ursprunget (horisontellt) -
setTextSkewX(float skewX)
Detta kan betraktas som falsk kursiv. SkewX representerar den horisontella offseten för textbotten. (använd -0,25 för kursiv) -
setStyle(Paint.Style style)
Fyll textFILL
, stroke textSTROKE
eller bådaFILL_AND_STROKE
Observera att du kan använda TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, size, getResources().getDisplayMetrics())
att konvertera från SP eller DP till pixlar.
Mätning av text
-
float width = paint.measureText(String text)
Mät textbredden -
float height = paint.ascent()
Mät textens höjd -
paint.getTextBounds(String text, int start, int end, Rect bounds
. Du har allokerat Rect, det kan inte vara noll:
String text = "Hello world!";
Rect bounds = new Rect();
paint.getTextBounds(text, 0, text.length(), bounds);
Det finns andra metoder för mätning, men dessa tre bör passa de flesta syften.
Ställa in färg för att rita former
-
setStyle(Paint.Style style)
Fylld formFILL
, Stroke-formSTROKE
, eller bådaFILL_AND_STROKE
-
setColor(int color)
Ställ in färgfärgen. Du kan också användasetARGB(int a, int r, int g, int b
ochsetAlpha(int alpha)
-
setStrokeCap(Paint.Cap cap)
Ställ in linjekåpor, antingenROUND
,SQUARE
ellerBUTT
(none) Se detta . -
setStrokeJoin(Paint.Join join)
Ställ in linjefogningar, antingenMITER
(spetsig),ROUND
ellerBEVEL
. Se detta . -
setStrokeMiter(float miter)
Ställ in gränsen försetStrokeMiter(float miter)
. Detta kan förhindra att miter-kopplingen pågår på obestämd tid, och förvandlar den till en avfasningskoppling efter x-pixlar. Se detta . -
setStrokeWidth(float width)
Ställ in slagbredd.0
kommer att rita i hårlinjeläge, oberoende av dukmatrisen. (alltid 1 pixel)
Ställa in flaggor
Du kan ställa in följande flaggor i konstruktören, eller med setFlags(int flags)
-
Paint.ANTI_ALIAS_FLAG
Aktivera antialiasing, jämnar ritningen. -
Paint.DITHER_FLAG
Aktivera dithering. Om färgprecisionen är högre än enhetens, kommer detta att hända . -
Paint.EMBEDDED_BITMAP_TEXT_FLAG
Aktiverar användning av bitmappssteckensnitt. -
Paint.FAKE_BOLD_TEXT_FLAG
ritar text med en falsk fet fet effekt, kan användas istället för att använda ett djärvt typsnitt. Vissa teckensnitt har utformat fetstil, falska fetstil kommer inte -
Paint.FILTER_BITMAP_FLAG
Påverkar sampling av bitmappar vid omvandling. -
Paint.HINTING_OFF
,Paint.HINTING_ON
typsnitt tips, se detta -
Paint.LINEAR_TEXT_FLAG
InaktiverarPaint.LINEAR_TEXT_FLAG
ritningsfunktioner skalas istället -
Paint.SUBPIXEL_TEXT_FLAG
Text kommer att beräknas med subpixels noggrannhet. -
Paint.STRIKE_THRU_TEXT_FLAG
Texten som dras kommer att streckas -
Paint.UNDERLINE_TEXT_FLAG
Text som dras kommer att betonas
Du kan lägga till en flagga och ta bort flaggor så här:
Paint paint = new Paint();
paint.setFlags(paint.getFlags() | Paint.FLAG); // Add flag
paint.setFlags(paint.getFlags() & ~Paint.FLAG); // Remove flag
Att försöka ta bort en flagga som inte finns där eller lägga till en flagga som redan finns där kommer inte att ändra någonting. Observera också att de flesta flaggor också kan ställas in med set<Flag>(boolean enabled)
, till exempel setAntialias(true)
.
Du kan använda paint.reset()
att återställa färgen till dess standardinställningar. Den enda standardflaggan är EMBEDDED_BITMAP_TEXT_FLAG
. Det kommer att ställas in även om du använder new Paint(0)