27
拡張ビューでいくつかのコードをセットアップすると、縮尺が簡単な(ベクターのような)いくつかの図面があります。ペイントがストロークに設定されている場合、Android Canvas.drawTextOnPathが正しく表示されない
塗りつぶしをFILLに設定すると、パスに描かれたテキストは正しく見えますが、塗りをストロークに設定すると気付きました(私はちょうどテキスト)は、LSD旅行にあるように見えます。私は、私は下の画像を取得するストロークにFILLからPaint.Styleを変更した場合は
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;
}
:ここに私のサンプルコードです。私canvas.drawText()を使用して、それは細かい文字を表示するうまく動作します。それがパスに適用されたときだけ、それはすべて奇妙になるようです。
'drawTextOnPath'は、ハードウェアアクセラレーションをオンにしてサポートされているキャンバス操作ではない可能性があります。 http://android-developers.blogspot.com/2011/03/android-30-hardware-acceleration.html –
ありがとうローマをチェックしてみてください。 – Chrispix
したがって、このinstance.setLayerType(View.LAYER_TYPE_SOFTWARE、null)を試しました。 drawTextOnPathを実行した後、instance.setLayerType(View.LAYER_TYPE_HARDWARE、null)を実行しました。 - 同じことをしますか? – Chrispix