Android 如何将此背景图像用于所有纵横比?

Android 如何将此背景图像用于所有纵横比?,android,image,android-layout,background,aspect-ratio,Android,Image,Android Layout,Background,Aspect Ratio,我有一张像这样的图片,用作相对主义者的背景: 此图像用作我的所有游戏级别的背景。每个标高都绘制在蓝色区域上。 我想固定蓝色区域的纵横比,更改红色边缘的大小,以避免向用户显示其屏幕上未使用的像素。对于所有手机,绿色区域必须固定为80dp。然后,我必须在我的布局中添加一个视图(GLSURFACHEVIEW),使其完全适合蓝色区域。因此,在所有Android设备中,我的Android游戏的所有级别都将完全相同 我如何解决这个问题? 我使用的真实图像稍微复杂一些。您可以在这里查看: 我会在屏幕的中间部

我有一张像这样的图片,用作相对主义者的背景:

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

我如何解决这个问题?

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


我会在屏幕的中间部分(蓝色)使用框架布局,添加一个包含要显示的背景图像的ImageView,并将GLSurfaceView放在上面

由于纵横比始终相同,您可以将ImageViews sclaing设置为适合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>


由于我不知道如何构建视图,我无法发布执行此任务的代码,只需在视图中添加一个框架布局,而不是GLSURFACHEVIEW,具有与GLSURFACHEVIEW相同的维度

首先向该框架布局添加ImageView,然后添加GLSurfaceView。高度和宽度都设置为与父项匹配

要计算SurfaceView的大小

  • 检索显示尺寸
  • 减去绿色条标注
  • 计算蓝色视图的大小,获得高度/宽度(较大者)计算缺少的尺寸
  • 将红色视图设置为占用空白空间

  • 因此,您必须以编程方式执行此操作:)

    Mmm,我不能使用此方法,因为我的真实图像比问题中的图像更复杂。看我的真实图像,我编辑了这个问题。我真的没有看到任何问题,即使是真实图像。如果你能确定纵横比是固定的,我想不出有什么问题。请按照我的建议将GLSURFACHEVIEW包装起来,或者让我知道问题出在哪里,因为我想不出任何问题。因此,也许我不明白你的答案。你能再详细一点吗?谢谢你……”同样的尺寸,GLSURFACHEVIEW应该有。“问题是我不知道GLSURFACHEVIEW的尺寸,我只知道它的纵横比。啊,对不起,我以为你已经知道怎么做了:)