Android 在不同屏幕的图像视图之间保持大小比例

Android 在不同屏幕的图像视图之间保持大小比例,android,Android,在我的应用程序中,我有一个布局,有3个不同高度的图像视图(苹果、葡萄酒、鱼),底部对齐。布局高度是恒定的。这种布局在hdpi屏幕上看起来不错,但我想在mdpi上使用相同的图像。问题是,在mdpi上,一些图像视图可能被缩小,并且图像视图之间的比例将不相同。因此,如果葡萄酒的体积缩小,苹果可能会像酒瓶一样高。避免这种情况的最佳方法是什么?我考虑在运行时为图像设置相同的高度(最大高度)。然后,它们都将被缩放,并且比例将保持不变。这可能吗。我希望这是清楚的。谢谢。刚刚设定: android:scaleT

在我的应用程序中,我有一个布局,有3个不同高度的图像视图(苹果、葡萄酒、鱼),底部对齐。布局高度是恒定的。这种布局在hdpi屏幕上看起来不错,但我想在mdpi上使用相同的图像。问题是,在mdpi上,一些图像视图可能被缩小,并且图像视图之间的比例将不相同。因此,如果葡萄酒的体积缩小,苹果可能会像酒瓶一样高。避免这种情况的最佳方法是什么?我考虑在运行时为图像设置相同的高度(最大高度)。然后,它们都将被缩放,并且比例将保持不变。这可能吗。我希望这是清楚的。谢谢。

刚刚设定:

android:scaleType="fitCenter"
在每个图像视图上。无论高度如何,它们都会按比例调整大小

编辑:为了澄清权重问题,假设您有三个图像(鱼、苹果、瓶子),我们将它们称为F、A和B

假设我们知道:

F应该是A的2倍高。
A 应该是B的一半高

所以我们知道F应该和B一样高,而A应该是B高度的一半。我们可以给F和B相等的重量(1),给A一半的重量(0.5)。为了简化,我们可以乘以2得到整数,因此F和B的权重为2,a的权重为1。这样,无论将LinearLayout设置为什么高度,图像都应保持彼此成比例

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="200dp"
    android:orientation="vertical"
    >
    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="2"
        android:src="@drawable/fish"
        android:scaleType="fitCenter"
        />
    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:src="@drawable/apple"
        android:scaleType="fitCenter"
        />
    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="2"
        android:src="@drawable/bottle"
        android:scaleType="fitCenter"
        />
</LinearLayout>

我相信这就是你的要求,但我可能还是弄错了。

刚刚设定:

android:scaleType="fitCenter"
在每个图像视图上。无论高度如何,它们都会按比例调整大小

编辑:为了澄清权重问题,假设您有三个图像(鱼、苹果、瓶子),我们将它们称为F、A和B

假设我们知道:

F应该是A的2倍高。
A 应该是B的一半高

所以我们知道F应该和B一样高,而A应该是B高度的一半。我们可以给F和B相等的重量(1),给A一半的重量(0.5)。为了简化,我们可以乘以2得到整数,因此F和B的权重为2,a的权重为1。这样,无论将LinearLayout设置为什么高度,图像都应保持彼此成比例

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="200dp"
    android:orientation="vertical"
    >
    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="2"
        android:src="@drawable/fish"
        android:scaleType="fitCenter"
        />
    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:src="@drawable/apple"
        android:scaleType="fitCenter"
        />
    <ImageView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="2"
        android:src="@drawable/bottle"
        android:scaleType="fitCenter"
        />
</LinearLayout>


我相信这就是你所要求的,但我可能还是弄错了。

问题是,如果图像视图缩小,我希望其他视图也缩小,并且彼此之间的比例相同。如果其中一个的高度为200,另一个为50,并且如果第一个缩放为100,则另一个必须缩放为25。通过这种方式,“苹果”仍然比“瓶子”小。在运行时创建一个包含所有3个图像的图像,并且只使用一个图像视图,使用合成图像而不是3个图像,这可能是一个解决方案。但是我还不知道怎么做。尝试使用layout\u-weight属性。将三个ImageView放在一个线性布局中,并为每个视图指定一个特定的重量(例如,如果瓶子应该是苹果的两倍大,则瓶子的重量为2,苹果的重量为1)。设置所有ImageView高度以填充父对象。感谢您的回复,但这不起作用。也许我不清楚。这是关于图像,而不是图像视图。当一个图像被缩放时,另一个图像也必须被缩放,比例相同。这就是为什么,我认为创建一个包含所有3个图像的大图像将是一个解决方案。这样,当一个高图像必须缩放时,整个合成图像都会被缩放,包括小图像。问题是,如果一个图像视图被缩小,我希望其他图像也被缩小,并且彼此之间的比例相同。如果其中一个的高度为200,另一个为50,并且如果第一个缩放为100,则另一个必须缩放为25。通过这种方式,“苹果”仍然比“瓶子”小。在运行时创建一个包含所有3个图像的图像,并且只使用一个图像视图,使用合成图像而不是3个图像,这可能是一个解决方案。但是我还不知道怎么做。尝试使用layout\u-weight属性。将三个ImageView放在一个线性布局中,并为每个视图指定一个特定的重量(例如,如果瓶子应该是苹果的两倍大,则瓶子的重量为2,苹果的重量为1)。设置所有ImageView高度以填充父对象。感谢您的回复,但这不起作用。也许我不清楚。这是关于图像,而不是图像视图。当一个图像被缩放时,另一个图像也必须被缩放,比例相同。这就是为什么,我认为创建一个包含所有3个图像的大图像将是一个解决方案。这样,当必须缩放高图像时,将缩放整个合成图像,包括小图像。