【问题标题】:How can I use this background image for all aspect ratio?如何将此背景图像用于所有纵横比?
【发布时间】:2013-10-21 07:15:34
【问题描述】:

我有一张像这样的图像用作相对布局中的背景

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

我该如何解决这个问题?

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

Real image

【问题讨论】:

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


    【解决方案1】:

    我会在屏幕的中间部分(蓝色)使用 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. 计算蓝色视图的大小,得到高度/宽度(以较大者为准)计算缺失的维度
    4. 将红色视图设置为占用空白空间。

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

    【讨论】:

    • 嗯,我不能用这个方法,因为我的真实图像比问题中的图像更复杂。看我的真实形象,我编辑了问题。
    • 我真的没有看到任何问题,即使是真实的图像。如果您可以确定纵横比是固定的,那么我能想到的没有问题。只需按照我的建议包装 GLSurfaceView,或者让我知道似乎是什么问题,因为我想不出任何问题。
    • 所以也许我不明白你的回答。请问能详细点吗?谢谢...
    • "具有相同的尺寸,GLSurfaceView 将具有。"问题是我不知道 GLSurfaceView 的尺寸,我只知道它的纵横比。
    • 啊抱歉,我以为你已经知道该怎么做了 :)
    猜你喜欢
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 2013-10-01
    • 2012-08-11
    相关资源
    最近更新 更多