将SurfaceView与其他视图(如TextView和Buttons)相结合

时间:2010-10-26 19:45:21

标签: android android-layout layout opengl-es surfaceview

我对Android编程完全不熟悉(只做了一些教程/阅读开发指南等),并且每个新手我都想做一个无用的游戏: - )。

目前我正在努力应对不同观点的布局。与示例类似,我创建了一个扩展SurfaceView并将其放入FrameLayout的类。围绕这个SurfaceView我希望有其他视图,例如Buttons& TextViews。 像这样:

-----------------------------------------------
| TextView | SurfaceView           | TextView |
|          |                       |          |
------------                       ------------
|          |                       | TextView |
|          |                       |          |
|          |                       ------------
|          |                       | TextView |
|          |                       |          |
|          |                       ------------
|          |                       |          |
|          |                       |          |
-----------------------------------------------
| Button                             Button   |
-----------------------------------------------

我设法用FrameLayoutRelativeLayouts做了类似的事情(在屏幕的边缘贴了TextViews),但我想更好地控制尺寸SurfaceView,因为它应该是我将要在其中绘制的对象的宽度和高度的倍数。我已经尝试将layout_widthlayout_height设置为某些dp值,但是当我开始绘制0,0时,它仍然位于左上角(TextView所在的位置......)

那么,实现上述布局的最佳实践是什么?使用什么布局?或者我应该更好地在我draw()的{​​{1}}函数中绘制我的文字吗?

1 个答案:

答案 0 :(得分:6)

布局是将OpengGL内容与按钮,标签和其他类型的视图对象相结合的正确方法。您可以将布局组合在其他布局中......这样您就可以逐步构建线性布局或任何您喜欢的布局。

例如,您可以使用相对布局来设置按钮(b1,b2)和屏幕的其余部分:

+-----------+
|  Zone 1   |
+-----+-----+
| b1  | b2  |
+-----+-----+

然后在区域1内,您可以对3个主要列使用水平线性布局

+----+----+----+
| c1 | c2 | c3 |
+----+----+----+

在c2内部,您可以放置​​SurfaceView,在c1中放置文本标签

c3内部将是一个新的垂直线性布局,用于显示文本标签。

+----+
| t1 |
+----+
| t2 |
+----+
| t3 |
+----+