2010-05-20 6 views
5

Ich mache ein AppWidget und in seinen Einstellungen lasse ich den Benutzer Text Schatten aktivieren/deaktivieren. Da ich die Shadow-Methode nicht über die RemoteViews-Klasse aufrufen kann, mache ich eine "draw" -Methode, die das Widget und seinen Container dynamisch malt.Rendern Sie knackigen Text mit Canvas.drawText in Android

Beim Zeichnen des Textes wird es jedoch unscharf und nicht so scharf wie bei der Verwendung eines TextView. Der einzige Code, den ich für den Text Malerei verwendet habe, ist:

Paint p = new Paint(); 
p.setAntiAlias(true); 
p.setColor(Color.WHITE); 

es andere Magie, die ich tun müssen, um es schärfer werden?

Antwort

11
Paint paint = new Paint(Paint.LINEAR_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG); 

den Trick für mich getan haben

1

Dies sind meine Textfarbe Einstellungen:

textPaint = new Paint(); 
    textPaint.setStyle(Paint.Style.FILL); 
    textPaint.setAntiAlias(true); 
    textPaint.setARGB(255, 255, 255, 255); 
    textPaint.setFakeBoldText(true); 
    textPaint.setTextSize(textSize); 

scheint für mich gut arbeiten zu werden.

+1

Farbe malen = neue Farbe (Paint.LINEAR_TEXT_FLAG | Paint.ANTI_ALIAS_FLAG); hat den Trick für mich gemacht – Tomas

+0

Danke für den Tipp. Werde es ausprobieren und sehen, ob mein Text jetzt besser aussieht. :) – Abhinav

0

Die textsetAntiAlias(true)(im Hardware-Modus) funktioniert nur von API 18 und oben so diesen Code verwenden, um Ihren Schichttyp einzustellen.

int currentapiVersion = android.os.Build.VERSION.SDK_INT; 
    if (currentapiVersion >= android.os.Build.VERSION_CODES.HONEYCOMB && currentapiVersion < android.os.Build.VERSION_CODES.JELLY_BEAN_MR2) { 
     this.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 
    } 
+1

Falsch. https://developer.android.com/reference/android/graphics/Paint.html#setAntiAlias(boolean) Dies wurde in der SDK seit API Level 1 – Tomas

+0

@Tomas Bitte überprüfen Sie meine bearbeitete Antwort. Wie in API 18 wurde die AntiAlias-Funktion in der Softwareebene gestoppt. –

+0

Ah, ja. Für zukünftige Referenz: http://developer.android.com/guide/topics/graphics/hardware-accel.html#unsupported – Tomas

Verwandte Themen