canvas.drawTextOnPath 不再工作
canvas.drawTextOnPath no longer working
有人可以帮助我,因为我无法再让 drawTextOnPath 工作吗?
我写的表盘在升级手表软件(和phone)后无法正常工作,所以我正在写
使用当前的表盘模板 (targetSdk 27) 再次从头开始。
目前我有这个(在引擎的 onCreate 期间设置背景位图之后的方法中 class):
Paint mDayDialPaint2 = new Paint();
mDayDialPaint2.setColor(Color.RED);
mDayDialPaint2.setTextSize(10f);
mDayDialPaint2.setAntiAlias(true);
mDayDialPaint2.setStrokeWidth(65f);
mDayDialPaint2.setStyle(Paint.Style.FILL_AND_STROKE);
mDayDialPaint2.setTextAlign(Paint.Align.LEFT);
// canvas.drawTextOnPath(wkendText, textPathDay, 1f, 4f, mDayDialPaint2);
canvas.drawTextOnPath("abcdefgh", textPathDay, 1f, 4f, mDayDialPaint2);
//View.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
//canvas.drawPath(textPathDay, mDayDialPaint2);
当我取消注释 canvas.drawPath 作为测试时,它起作用了。所以路径存在并且在正确的位置。
我尝试了各种文本大小和笔划宽度、多种样式、文本对齐和不对齐。
遵循来自 SO 和其他地方的建议,我也尝试过:
- setLayerType - 'non-static method cannot be referenced from a static context' 因为我没有扩展视图
- 禁用硬件加速(在清单中)。
我确实找到了 SO post
Canvas.drawTextOnPath(...) not working on Lollipop
那说 drawTextOnPath 从 Lollipop 开始就坏了,你必须重新缩放并重新计算 canvas 上的所有内容,但这是很多工作,从那时起我已经看到几个 posts 似乎发现它工作正常所以我觉得没必要。
还有其他建议吗?
我后来通过调用该代码设法解决了这个问题。本来是在Engine.onCreate,跟随着背景和表盘的初始化;现在它在 onApplyWindowinsets 的末尾被调用并且工作正常。
有人可以帮助我,因为我无法再让 drawTextOnPath 工作吗?
我写的表盘在升级手表软件(和phone)后无法正常工作,所以我正在写 使用当前的表盘模板 (targetSdk 27) 再次从头开始。 目前我有这个(在引擎的 onCreate 期间设置背景位图之后的方法中 class):
Paint mDayDialPaint2 = new Paint();
mDayDialPaint2.setColor(Color.RED);
mDayDialPaint2.setTextSize(10f);
mDayDialPaint2.setAntiAlias(true);
mDayDialPaint2.setStrokeWidth(65f);
mDayDialPaint2.setStyle(Paint.Style.FILL_AND_STROKE);
mDayDialPaint2.setTextAlign(Paint.Align.LEFT);
// canvas.drawTextOnPath(wkendText, textPathDay, 1f, 4f, mDayDialPaint2);
canvas.drawTextOnPath("abcdefgh", textPathDay, 1f, 4f, mDayDialPaint2);
//View.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
//canvas.drawPath(textPathDay, mDayDialPaint2);
当我取消注释 canvas.drawPath 作为测试时,它起作用了。所以路径存在并且在正确的位置。
我尝试了各种文本大小和笔划宽度、多种样式、文本对齐和不对齐。
遵循来自 SO 和其他地方的建议,我也尝试过:
- setLayerType - 'non-static method cannot be referenced from a static context' 因为我没有扩展视图
- 禁用硬件加速(在清单中)。
我确实找到了 SO post Canvas.drawTextOnPath(...) not working on Lollipop 那说 drawTextOnPath 从 Lollipop 开始就坏了,你必须重新缩放并重新计算 canvas 上的所有内容,但这是很多工作,从那时起我已经看到几个 posts 似乎发现它工作正常所以我觉得没必要。
还有其他建议吗?
我后来通过调用该代码设法解决了这个问题。本来是在Engine.onCreate,跟随着背景和表盘的初始化;现在它在 onApplyWindowinsets 的末尾被调用并且工作正常。