2016-10-19 4 views
0

Ich möchte ein Symbol von Fontawesome auf eine Benachrichtigungsansicht in Android zeichnen. Um dies zu tun, habe ich versucht, dieses Symbol auf eine Bitmap zu zeichnen, die Schriftart festzulegen und dann die Bitmap in der Benachrichtigungsansicht zu setzen.Zeichnen Fontawesome zu Bitmap

Ich benutze diesen Code:

Bitmap myBitmap = Bitmap.createBitmap(100, 50, Bitmap.Config.ARGB_8888); 
Canvas myCanvas = new Canvas(myBitmap); 
Paint paint = new Paint(); 
Typeface typeface = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontawesome-webfont.ttf"); 
paint.setAntiAlias(true); 
paint.setSubpixelText(true); 
paint.setTypeface(typeface); 
paint.setStyle(Paint.Style.FILL); 
paint.setColor(Color.WHITE); 
paint.setTextSize(15); 
myCanvas.drawText("", 0, 20, paint); 
notificationView.setImageViewBitmap(R.id.activity, myBitmap); 

Aber es zeigt, ist "" und kein Symbol. In anderen Zusammenhängen funktioniert der Fontawesome gut.

+0

'drawText()' wird nicht automatisch eine Entity-Referenz im HTML-Stil für Sie selbst konvertieren. – CommonsWare

+0

OK, hast du eine Idee, was ich ändern kann, damit es funktioniert? – ksome

+1

Versuchen Sie '" \ u "" Notation: http://Stackoverflow.com/a/8062048/115145 http://javajee.com/unicode-escapes-in-java – CommonsWare

Antwort

1

 ist eine Entitätsreferenz im HTML-Stil. Die meisten Orte in Android behandeln das nur als eine Folge von Zeichen ohne besondere Bedeutung.

In Ihrem Fall ist die einfachste Lösung Java Unicode-String Literalsyntax zu verwenden, die &#x mit \u ersetzen und die ; entfernen, geben Sie "\uf29d".