在画布上绘制位图的问题不适用于特定设备

时间:2014-01-12 18:08:09

标签: android canvas bitmap

我对Canvas对象的drawBitmap有一个特殊问题。

我在Play商店here发布的扫雷游戏中使用经典的Canvas。

游戏用细胞绘制板。单元格是在Canvas上绘制的位图。一切都在Android设备上正常工作,结果如下:

Board displayed normally

问题来自两种设备:阿尔卡特和Wiko。

详细说明,它涉及阿尔卡特One Touch MPop,Wiko Cink Slim和Wiko Cink Peax。

所有安装了Android 4.1但我认为Android版本没有问题,因为其他智能手机上的其他用户都使用Android 4.1并且运行良好。

对于这些设备,它看起来像这样:

Board displayed on Wiko device

不幸的是,在模拟器上重现该错误是不可能的。我认为,我在模拟器上与Wiko或Alcatel设备具有相同的配置存在问题。

我为这些设备的用户制作了具有调试跟踪的APK的特殊版本。该日志似乎与其他有效的设备相同。 Drawables正常加载,尺寸良好,也绘制它们的位置,......

所以,我不知道是什么原因造成的。为什么它适用于所有设备但不适用于这些设备这些设备的特殊性是什么?

例如,我绘制单元格(即位图)的画布中的代码就像这样:

for (int i = 0; i < rowsX; i++) {
    for (int j = 0; j < rowsY; j++) {
        canvas.drawBitmap(content[i][j].getBitmap(),i * blockSize, j * blockSize, null);
    }
}

该代码没有什么特别之处。 Paint对象为null但我也尝试放置一个这样的实例:new Paint(),结果是相同的。

另外,我要求尝试相同的代码,但使用canvas.drawRect。结果很好,绘制了矩形:

enter image description here

所以,问题来自于未绘制的位图,因为它的加载良好,缩放比例正确,且尺寸正确。很奇怪。

那么,有人会对这个问题有所了解吗?或者,其他人测试我可以做什么?

感谢您的帮助。

西尔

1 个答案:

答案 0 :(得分:0)

问题是位图的大小。我有同样的问题。太大的位图导致它根本不绘制(没有任何错误)。