4

我开发了一个小游戏,我的一个朋友/同事在他的摩托罗拉 Xoom 平板电脑上试了一下,结果发现渲染一团糟!我剥离了所有内容,试图简化所有内容以查看问题所在,并且我认为摩托罗拉 Xoom 在绘图方面只是有问题。两者都使用完全相同的 APK,具有完全相同的绘图代码。我有一个自定义视图,它现在正在绘制一个黑色矩形,如下所示:

@Override
public void draw(Canvas canvas) {
    super.draw(canvas);

    canvas.save();
    canvas.scale(16.0f, 16.0f);
    float lineWidth = 20 / 16.0f;

    paint.setAntiAlias(false);
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeWidth(lineWidth);
    paint.setColor(boardColor); // boardColor is just black
    canvas.drawRect(100 / 16.0f,
                    100 / 16.0f,
                    200 / 16.0f,
                    200 / 16.0f,
                    paint);

    canvas.restore();
}

在我的 Sprint Galaxy SII,Android 4.0.4 上,我得到(我也在 Galaxy SIII 设备上得到这个): 银河 SII 截图

在我朋友的摩托罗拉 Xoom,Android 4.1.2 上,我得到: 摩托罗拉 Xoom 截图

我想要的只是一个大小正确、没有抗锯齿的矩形。我究竟做错了什么?还是Xoom?

4

2 回答 2

0

你的缩放发生了一些奇怪的事情。如果我取出 canvas.scale() 并删除矩形中的所有“/16.0f”,那么矩形看起来就好了。有了这些,我可以确认我的 xoom 显示了来自你朋友 xoom 的奇怪矩形。

因此,您需要找出一种不同的方法来缩放形状。

mPixelsInOneDp = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1,
            res.getDisplayMetrics());

我使用“mPixelsInOneDp”来确保我的所有测量结果以及在不同设备上的 DP 中最终结果是相同的。我在缩放方面没有任何问题,所以我认为最后你需要调整你的数字,直到在 xoom 上看起来不错。

于 2012-11-26T20:36:51.943 回答