首页 文章

Android游戏在不同的Android手机中的工作方式不同

提问于
浏览
2

我最近为Android 2.3.3开发了一款游戏,奇怪的是我发现了一些 weird behaviour in different phones

例如

  • 爆炸精灵(256x256像素)分为4x4 = 16张图像,显示时在 Samsung Galaxy Ace 2.3.3 and Samsung Galaxy Y, 2.3.5 中显示为2x2图像,

  • 此外,加速度计在索尼Xperia 2.3.3和三星Galaxy Ace中以偶然的形式工作..要么太慢(并且在3-4秒间隙后采取触摸手势)和Android操作系统抛出警告框说,该应用程序是没有回应,否则它太快了 .

奇怪的是, game works perfectly on a Samsung S2 ,就像它在 VirtualBox 上播放一样..

请帮助我,b'cos这是我的大学项目,如果存在这样一个奇怪的问题,我甚至无法将其投入市场!

提前致谢!!

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 从资源中读取图像并准备好在屏幕上渲染相对于160DPI的图像时,它们将具有在具有不同像素密度的屏幕上用尺子测量的相同长度 . 例如,如果在Galaxy S2上具有128x128像素的图像长2cm,宽2cm,则在Galaxy Ace上应该是2cm长和2cm宽 . 然而,为了覆盖Galaxy S2上的更多像素,当在Galaxy S2上绘制时,它被调整为192 x 192像素,因为它作为Android系统的DPI知道它是ADP1(HTC Dream)的DPI的240倍,1.5倍 . 同样,图像将在Galaxy Ace或Galaxy Y上调整为96 x 96 .

    不幸的是, canvas.drawImage 中的源矩形指的是调整大小的位图中的像素数 . 这意味着代码示例中使用的相同源矩形覆盖Galaxy Y上的像素数是Galaxy S2上的4倍 . 我想你在"the same sprite file looks like it was divided in 2x2 on a low DPI device but it should be divided by 4x4"的问题中描述 .

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

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

  • 0

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

相关问题