我有这样的图像用作RelativeLayout中的背景:

此图像用作我游戏所有级别的背景。每个级别都被绘制到蓝色区域。我想保持固定蓝色区域的纵横比,改变红色边缘的大小以避免向用户显示屏幕上未使用的像素。所有手机的绿色区域必须固定为 80dp。然后我必须在我的布局中添加一个视图(一个 GLSurfaceView),使其完全适合蓝色区域。因此,我的 Android 游戏的所有级别在所有 Android 设备中都将完全相同。
我怎么解决这个问题?
我使用的真实图像稍微复杂一些。你可以在这里查看:
我有这样的图像用作RelativeLayout中的背景:

此图像用作我游戏所有级别的背景。每个级别都被绘制到蓝色区域。我想保持固定蓝色区域的纵横比,改变红色边缘的大小以避免向用户显示屏幕上未使用的像素。所有手机的绿色区域必须固定为 80dp。然后我必须在我的布局中添加一个视图(一个 GLSurfaceView),使其完全适合蓝色区域。因此,我的 Android 游戏的所有级别在所有 Android 设备中都将完全相同。
我怎么解决这个问题?
我使用的真实图像稍微复杂一些。你可以在这里查看:
我会在屏幕的中间部分(蓝色)使用 FrameLayout,添加一个 ImageView,其中包含要显示的 BackgroundImage,然后将 GLSurfaceView 放在它上面。
由于纵横比始终相同,您可以将 ImageViews 设置为适合 xy,并且图像应该始终看起来相同。
假设您正在使用一个简单的 SurfaceView,用于放置 ImageView 的 xml 代码 id 看起来像这样
<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>
因为我不知道你如何构建你的视图,所以我不能发布完成这项工作的代码,但只需将一个 FrameLayout 而不是你的 GLSurfaceView 添加到你的视图中,具有相同的尺寸,GLSurfaceView 就会有。
首先向该 FrameLayout 添加 ImageView,然后添加 GLSurfaceView。高度和宽度都设置为 match_parent。
要弄清楚 SurfaceView 的大小...
所以你必须以编程方式执行此操作:)