我使用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语句?
答案 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
}