2

我使用 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 中,+ 位于中心。

我不知道发生了什么-我认为这不正常。

代码有问题还是我真的必须编写一个 if 语句来区分坐标的 Android 版本?

4

1 回答 1

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
}
于 2013-04-29T20:45:14.047 回答