Mam konfigurację kodu w rozszerzonym widoku, który wykonuje niektóre rysunki, które są łatwo skalowane (podobne do wektorowych). (Moja skala została ustawiona jako 0-1.0)Android Canvas.drawTextOnPath nie wygląda poprawnie, gdy farba jest ustawiona na obrys
Zauważyłem, że gdy ustawiam wypełnienie farbą na WYPEŁNIĆ, tekst narysowany na ścieżce wygląda prawidłowo, ale gdy ustawiam wypełnienie do obrysu (chcę tylko obrysu tekst) obraz wygląda tak, jak na niektórych tripach LSD. Oto mój przykładowy kod:
Paint yellowPaint = Paints.getFillTextPaint(0.01f, 0xFFffea3e, 0.065f);
canvas.drawTextOnPath(mContext.getString(R.string.building_a_partnership),
Paths.getRoundedTextPath(mOuterCircleRectF, 280f, 350f),
0, -0.025f, yellowPaint);
public static Paint getFillTextPaint(float f, int color, float textSize) {
Paint textPaint = new Paint();
textPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
textPaint.setStyle(Paint.Style.FILL);
textPaint.setColor(color);
textPaint.setTextSize(textSize);
textPaint.setStrokeWidth(f);
textPaint.setShadowLayer(0.002f, 0.0f, 0.0f, 0xFF000000);
textPaint.setTypeface(Typeface.SANS_SERIF);
return textPaint;
}
Jeśli zmienię Paint.Style z FILL na STROKE, otrzymam poniższe obrazy. Użyłem canvas.drawText() i działa dobrze pokazując głaskane litery. Jest to tylko wtedy, gdy jest zastosowane do Ścieżki, kiedy wydaje się, że wszystko staje się dziwne.
'drawTextOnPath' może nie być obsługiwaną operacją canvas z włączonym akceleracją sprzętową. Zobacz http://android-developers.blogspot.com/2011/03/android-30-hardware-acceleration.html –
Dzięki Romanowi, sprawdzi to. – Chrispix
Próbowałem tego wystąpienia instance.setLayerType (View.LAYER_TYPE_SOFTWARE, null); zrobił drawTextOnPath, a następnie instancja.setLayerType (View.LAYER_TYPE_HARDWARE, null); - Czy to samo. – Chrispix