Android游戏编程

Android游戏编程,android,views,Android,Views,我有一个简单的2D益智游戏,我之前创建了它,扩展了视图,一切都很好,除非我在更小的设备上测试它。我的游戏的一半没有出现在设备上有人告诉我使用surface view我也试过了,但是没有用。有人能告诉我我放置各种图形对象时有什么问题吗 bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ring); canvas.drawBitmap(bitmap, 45, 250, paint); canvas.drawBitmap(

我有一个简单的2D益智游戏,我之前创建了它,扩展了视图,一切都很好,除非我在更小的设备上测试它。我的游戏的一半没有出现在设备上有人告诉我使用surface view我也试过了,但是没有用。有人能告诉我我放置各种图形对象时有什么问题吗

bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ring);
canvas.drawBitmap(bitmap, 45, 250, paint);
canvas.drawBitmap(bitmap, 135, 250, paint);
canvas.drawBitmap(bitmap, 225, 250, paint);

i、 e.我使用了静态值,这不是正确的方法还是我做错了?

当然不行。如果您需要在多个屏幕尺寸下玩游戏,您不能假设屏幕具有特定的尺寸。

我认为您可能需要在开始时根据手机的尺寸获得窗口的高度和宽度,您必须进行设置。

如果假设屏幕大小为320x480,则应在清单中设置
。它默认为true。。。将其设置为false意味着Android将负责将图形输出缩放到实际屏幕


当然,这种自动缩小尺寸的方法看起来不太完美。。。理想情况下,您不应假设屏幕大小。

获取屏幕的高度和宽度:

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenHeight = dm.heightPixels;
int screenWidth = dm.widthPixels;

然后使用这些值缩放所有对象。。。您可能需要指定位图的所有顶点,以便正确缩放。

您可以使用类似的游戏引擎,这样您就不必关心这样的事情。

我想支持所有屏幕大小。如果这是错误的方式,那么最好的做法是什么首先尝试自动缩放,也许看起来会不错。这完全取决于你的游戏是什么样子的。如果看起来很糟糕,那么你需要更改游戏代码。谢谢你的回答,虽然我通过使用设备高度和宽度缩放坐标得到了我想要的结果,但我不满意,一定有某种东西会自动做到这一点,因为我的同事已经在surfaceview中使用硬编码值做到了这一点,但他不知道这到底是怎么发生的,怎么做到的我会这样做吗?是的,他可以:他可以假设是这样,然后进行缩放。这就是问题的关键所在。假设一个粗略的例子是640x480,然后查询真实的尺寸和比例。@richieh:并不是所有的屏幕都具有相同的纵横比。如果你只是简单地重新缩放游戏,你要么会把游戏拉伸得不成比例,要么会在游戏周围留下黑色的边框。此外,随着高密度视网膜显示变得越来越普遍,一些用户会得到太小的按钮,而另一些用户则会得到太大的按钮。两者都不是好事。您需要使用流体或响应性设计技术来设计屏幕,以处理多种屏幕尺寸。你的意思是说像我们在CSW中做的那样在perecentage中转换它当广告宣传你自己的引擎时,通常会提到这个事实;)不过很明显,这家伙想自己动手。