我在RelativeLayout中有一个像背景这样的图像:
此图片用作我游戏所有关卡的背景。每个级别都被绘制到蓝色区域。 我想修复蓝色区域的宽高比,更改红色边的大小,以避免向用户显示未使用的他们的屏幕像素。所有手机的绿色区域必须固定为80dp。然后我必须在我的布局中添加一个View(一个GLSurfaceView),使其完全适合蓝色区域。因此,我的Android游戏的所有级别在所有Android设备中都将完全相同。
如何解决此问题?
我使用的真实图像有点复杂。你可以在这里查看:
答案 0 :(得分:0)
我会在屏幕的中间部分使用FrameLayout(蓝色),添加一个包含要显示的BackgroundImage的ImageView,并将GLSurfaceView放在其上。
由于纵横比始终相同,您可以将ImageViews sclaing设置为适合xy,图像应始终保持相同。
让我们假设你使用的是一个简单的SurfaceView,xml代码id用于放置一个ImageView,它看起来像这样
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:layout_height="match_parent"
android:layout_width="match_parent"/>
<SurfaceView
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
由于我不知道你如何构建你的View我不能发布完成这项工作的代码,但只是将一个FrameLayout而不是你的GLSurfaceView添加到你的View中,使用相同的尺寸,GLSurfaceView会有。
首先向FrameLayout添加ImageView,然后添加GLSurfaceView。高度和宽度都设置为match_parent。
计算SurfaceView的大小......
所以你必须以编程方式执行此操作:)