0

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

在此处输入图像描述

此图像用作我游戏所有级别的背景。每个级别都被绘制到蓝色区域。我想保持固定蓝色区域的纵横比,改变红色边缘的大小以避免向用户显示屏幕上未使用的像素。所有手机的绿色区域必须固定为 80dp。然后我必须在我的布局中添加一个视图(一个 GLSurfaceView),使其完全适合蓝色区域。因此,我的 Android 游戏的所有级别在所有 Android 设备中都将完全相同。

我怎么解决这个问题?

我使用的真实图像稍微复杂一些。你可以在这里查看:

真实形象

4

1 回答 1

0

我会在屏幕的中间部分(蓝色)使用 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 的大小...

  1. 检索显示尺寸
  2. 减去绿条尺寸
  3. 计算Blue View的大小,得到Height/Width(以较大者为准)计算缺失的Dimension
  4. 将红色视图设置为占用空白空间。

所以你必须以编程方式执行此操作:)

于 2013-10-20T20:12:28.657 回答