1

我想制作一个简单的Android游戏,其中显示一个大背景图像,并在其上方的特定位置显示其他一些图像,其他图像可能是可点击的。

这是我正在谈论的快速示例图像: 在此处输入图像描述

用户应该能够点击足球运动员或驼鹿(啊,经典的“足球运动员驼鹿问题”!)

我应该如何渲染这个屏幕(哪些布局和视图?)以便用户可以与之交互并且它可以在不同的设备上正确缩放?

4

5 回答 5

2

我会使用RelativeLayout。

您可以将背景图像设置为布局(fill_parent 表示高度和宽度)。

然后,您可以将包含驼鹿和足球运动员的 ImageViews 放在相对于屏幕顶部或侧面或彼此相对的布局上(确保为所有内容指定“dp”单位)。将 ImageViews 的背景设置为透明,并且不会出现边界框问题(和/或您也可以将 ImageViews 对齐设置为彼此相对,确保它们不重叠)。

我认为这是最简单的方法 - 然后将 onClickListener 附加到 Activity 中的 ImageView 非常容易,你就完成了。

这种类型的布局在所有设备和屏幕尺寸上都是一样的。

RelativeLayouts 有一些小问题,但是一旦你进入它们就非常简单,并且提供快速渲染(因为视图层次结构通常很浅)。祝你好运。

于 2012-11-15T14:52:49.133 回答
2

可点击元素的 ImageView 对我来说似乎是一个不错的选择。对于背景,我只是将您的图像设置为父布局的背景,即 RelativeLayout

于 2012-11-15T14:30:58.520 回答
0

我同意 FoamyGuy 和 Booger 的观点,如果您的唯一目标是将静态图像放置在屏幕上,当您单击它们时会执行某些操作,则一直使用 RelativeLayout 和 ImageViews。

但是...如果您希望在屏幕上间隔随机生成多个图像并让它们四处移动以供玩家在爆炸发生和少女被绑架时进行交互,您应该查看 SurfaceView、Canvas、Drawable、 TouchEvents 和 FrameBuffers。

于 2012-11-15T20:25:27.000 回答
0

SurfaceView用于整个事物(以您的字段作为背景)和常规 * ImageView *s 用于添加的元素。您可以轻松地从 SurfaceView 恢复单击坐标,从而知道触摸了哪个元素。

无论如何,SurfaceView 可能会为您提供额外的可能性。

于 2012-11-15T14:32:53.407 回答
0

对于大多数图像,我会为每个图像使用一个 ImageView,就像 FoamyGuy 说的那样。

如果它们足够接近重叠边界框成为问题,您仍然可以为每个使用 ImageView,但使用此答案的变体,测试范围内每个 ImageView 的 alpha。

于 2012-11-15T14:45:50.013 回答