2

我最近为 Android 2.3.3 开发了一款游戏,奇怪的是我在不同的手机中发现了一些奇怪的行为

例如

  1. 分解为 4x4=16 图像的爆炸精灵(256x256 像素),在Samsung Galaxy Ace 2.3.3 和 Samsung Galaxy Y, 2.3.5中显示为 2x2 图像时,

  2. 此外,加速度计在索尼 Xperia 2.3.3 和三星 Galaxy Ace 中以随意的形式工作。要么它太慢(并且在 3-4 秒间隔后采取触摸手势)并且 Android 操作系统会抛出一个警告框,说应用程序不是响应,否则太快了。

奇怪的是,该游戏在三星 S2 上完美运行,就像在VirtualBox上运行一样。

请帮帮我,因为这是我的大学项目,如果存在这样的奇怪问题,我什至无法将其投放市场!!

提前致谢!!

4

2 回答 2

1

我想我对图形问题有同样的经历:

从您的代码中,我猜您可能已经根据您在图像编辑器中看到的图像高度/宽度预先计算了“width_explosion”和“height_explosion”,并在不同的设备上使用了相同的值。

您列出的设备有两个不同的 DPI 值,如 Android 所知:240,或 MDPI (Galaxy S2) 和 120,或 LDPI (Galaxy Ace 和 Galaxy Y)。请注意,Galaxy S2 的 DPI 正好是 Ace 和 Y 的两倍。

Android 通过帮助应用程序作者处理图像来方便他们。当从资源中读取图像getDrawable并准备好在屏幕上渲染时,Android会根据 160DPI调整图像的大小,以便在具有不同像素密度的屏幕上使用标尺测量它们的长度相同。例如,如果一个 128x128 像素的图像在 Galaxy S2 上是 2 厘米长和 2 厘米宽,那么在 Galaxy Ace 上它应该是 2 厘米长和 2 厘米宽。然而,为了覆盖 Galaxy S2 上更多的像素,在 Galaxy S2 上绘图时,它的大小调整为 192 x 192 像素,因为它的 DPI 正如 Android 系统所知是 240,是 ADP1(HTC Dream)的 DPI 的 1.5 倍。同样,在 Galaxy Ace 或 Galaxy Y 上,图像将被调整为 96 x 96。

不幸的是,中的源矩形canvas.drawImage是指调整大小的位图中的像素数。这意味着代码示例中使用的相同源矩形在 Galaxy Y 上覆盖的像素是 Galaxy S2 上的 4 倍。我猜你在这个问题中描述的是“同一个精灵文件看起来像是在低 DPI 设备上被分割为 2x2,但它应该被分割为 4x4”。

以下示例说明了当我尝试使用具有不同 DPI 的设备复制您的问题时会发生什么。我不能发布图片,所以我把图片放在这里(这是我的博客):

http://edgeofmap.com/blog/2013/05/android-bitmap-over-devices-of-different-dpis/

于 2013-05-21T20:32:18.690 回答
0

不确定如何处理图形问题,但对于加速度计,每个设备的行为不同。在您的 onSensorChanged() 中使用event.sensor.getMaximumRange()以获得最大值并将您的操作基于该值或该值的百分比。

于 2012-05-06T07:41:40.713 回答