我开发了一款小游戏,我的一位朋友/同事在他的摩托罗拉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设备上得到了这个):
在我朋友的摩托罗拉Xoom,Android 4.1.2上,我得到:
我想要的只是一个尺寸正确,无抗锯齿的矩形。我究竟做错了什么?或者是Xoom?
答案 0 :(得分:1)
答案 1 :(得分:0)
你的缩放有一些奇怪的事情。如果我取出canvas.scale()并删除rect中的所有“/ 16.0f”,那么rect看起来很好。有了这些,我可以确认我的xoom显示了朋友的xoom中的奇怪矩形。
因此,您需要找出一种不同的方法来缩放形状。
mPixelsInOneDp = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1,
res.getDisplayMetrics());
我使用“mPixelsInOneDp来确保我的所有测量结果以及在不同设备上的DP中最终没有相同的结果。我没有任何缩放问题,所以我想到最后你需要调整您的号码直到它在xoom上看起来很好。