当paint设置为Stroke时,Android Canvas.drawTextOnPath看起来不正确

当paint设置为Stroke时,Android Canvas.drawTextOnPath看起来不正确,android,view,path,stroke,Android,View,Path,Stroke,我在一个扩展视图中设置了一些代码,它可以绘制一些容易缩放的图形(类似矢量)。(我的比例设置为0-1.0) 我注意到,当我将“paint fill”设置为“fill”时,在路径上绘制的文本看起来是正确的,但当我将“fill”设置为“stroke”(我只需要文本的轮廓)时,图像看起来像是在某种LSD旅行中。以下是我的示例代码: Paint yellowPaint = Paints.getFillTextPaint(0.01f, 0xFFffea3e, 0.065f); canvas.

我在一个扩展视图中设置了一些代码,它可以绘制一些容易缩放的图形(类似矢量)。(我的比例设置为0-1.0)

我注意到,当我将“paint fill”设置为“fill”时,在路径上绘制的文本看起来是正确的,但当我将“fill”设置为“stroke”(我只需要文本的轮廓)时,图像看起来像是在某种LSD旅行中。以下是我的示例代码:

    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(),它可以很好地显示笔划字母。只有当它被应用到一条路径上,当它看起来很奇怪的时候


显然,这是因为我的比例因子是0-1。。似乎存在一个错误,即如何处理渲染大小小于1.0的笔划。建议的解决方案是使用0-100的刻度

drawTextOnPath
在硬件加速打开时可能不是受支持的画布操作。谢谢你,Roman,我会查出来的。所以,我尝试了这个实例。setLayerType(View.LAYER\u TYPE\u SOFTWARE,null);先执行drawTextOnPath,然后执行instance.setLayerType(View.LAYER_TYPE_HARDWARE,null);-做同样的事情。好吧,我猜这确实是一个bug(只是看看你的代码)。介意在b.android.com/new上提交文件吗?我会通知我们的滑雪运动员folks@Chrispix,我没有尝试你的代码,但我敢打赌,这个问题与正在绘制的文本的大小有关。如果你再看看LSD trip的样子,你可以识别出巨大角色的某些部分。祝你好运