如何处理Android 4.2.2与canvas.drawText旧版本的区别

时间:2013-04-29 20:14:25

标签: android canvas

我使用drawText将一些文本绘制到画布上。 在Android 4.2.2之前,坐标0,0位于左上方,0.5 / 0.5位于我的画布中心。 在Android 4.2.2中,当我绘制到0.5 / 0.5时,文本位于画布的左边缘,1.0 / 0.5位于中心。所以它在x轴上移动了0.5。

这是代码:

Canvas backgroundCanvas = new Canvas(background);
float scale = (float) getWidth();
backgroundCanvas.scale(scale, scale);
final int desityDPi = getResources().getDisplayMetrics().densityDpi;
float convertedTextSize = (float) valueTextSize / (float) desityDPi;

scalePaint.setTextSize(convertedTextSize);
scalePaint.setTextAlign(Paint.Align.CENTER);

backgroundCanvas.drawColor(Color.GREEN);
backgroundCanvas.drawText("x", 0.5f, 0.5f, scalePaint);
backgroundCanvas.drawText("+", 1.0f, 0.5f, scalePaint);

所以在Andriod< 4.2.2 x位于画布的中心,在Android 4.2.2中,+位于画布的中心。

我不知道发生了什么 - 这可能不正常我会假设。

代码是否有问题,或者我是否真的需要编写区分Android版本坐标的if语句?

1 个答案:

答案 0 :(得分:0)

如果您已经证明由于API确实存在代码差异,那么只需使用API​​特定代码,但我怀疑还有另一个问题:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){
    // Do something for 4.2 and above
} else{
    // Do something different for older versions
}