如何保持在不同的屏幕背景长宽比

时间:2019-02-02 19:27:08

标签: android

我为Galaxy S9 +屏幕比例(几乎为2:1)的应用程序准备了背景图片,这样它对于所有屏幕尺寸都足够大。然后,我通过以下方式定义了背景可绘制对象:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/background"
    android:gravity="fill_horizontal"
    android:tileMode="disabled">
</bitmap>

然后我按如下方式使用它:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:bind="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".activities.GameActivity">

    <data>

        <variable
            name="viewModel"
            type="..." />
    </data>

    <FrameLayout
        android:id="@+id/g_viewPlaceholder"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@drawable/activity_background">

    </FrameLayout>
</layout>

当我在比率类似于SGS9 +的设备上运行应用程序时,背景似乎是正确的。但是,当我在运行该应用程序时(例如屏幕比例为16:9的Galaxy S6),背景会被垂直压缩(即使底部和顶部的部分都被切除了-按设计)。

如何将背景设置为水平拉伸并垂直切割,但要保持宽高比?

1 个答案:

答案 0 :(得分:2)

尝试低于该代码。

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/background"
android:gravity="clip_vertical|fill_horizontal"
android:tileMode="disabled">
</bitmap>

如果这不起作用,请尝试调整“布局重力”以垂直裁剪