如何将此背景图像用于所有宽高比?

时间:2013-10-20 20:04:48

标签: android image android-layout background aspect-ratio

我在RelativeLayout中有一个像背景这样的图像:

enter image description here

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

如何解决此问题?

我使用的真实图像有点复杂。你可以在这里查看:

Real image

1 个答案:

答案 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的大小......

  1. 检索显示尺寸
  2. Substract Green Bar Dimensions
  3. 计算蓝色视图的大小,获取高度/宽度(无论更大)计算缺失的维度
  4. 将红色视图设置为占用空白区域。
  5. 所以你必须以编程方式执行此操作:)