如何处理不同分辨率和旋转的图像宽高比

时间:2013-06-25 15:11:14

标签: android android-layout android-image

处理图像宽高比的正确和干净方法是什么?

在我的应用程序中,如果我旋转屏幕,我会失去纵横比,而我的图像看起来很难看 - 查看这些图片,比较我的应用和Play商店 - http://imgur.com/a/GriwP#0

这就是我正在做的事情:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:layout_gravity="center" >

    <Button
        android:id="@+id/btnStark"
        android:layout_marginLeft="4dp"
        android:layout_marginRight="2dp"
        android:layout_width="fill_parent"
        android:layout_height="100dp"
        android:layout_weight="1"
        android:background="@drawable/stark"
        android:gravity="center|bottom"
        android:layout_gravity="top" />

    <Button
        android:id="@+id/btnLannister"
        android:layout_marginLeft="2dp"
        android:layout_marginRight="4dp"
        android:layout_width="fill_parent"
        android:layout_height="100dp"
        android:layout_weight="1"
        android:background="@drawable/stark"
        android:gravity="center|bottom"
        android:layout_gravity="top" />
</LinearLayout>

我该如何处理高度?我应该设定一个固定值吗?或者有什么方法可以自动保持宽高比?

我正在使用的图像是400x300像素

2 个答案:

答案 0 :(得分:1)

考虑使用ImageViews代替按钮 - 它们可以像按钮一样点击。您可以使用scaleType属性设置图像缩放的方式。

http://developer.android.com/reference/android/widget/ImageView.ScaleType.html

例如,使用CENTER_INSIDE:

  

均匀缩放图像(保持图像的纵横比),使图像的尺寸(宽度和高度)等于或小于视图的相应尺寸(减去填充)。

所以,比如:

<ImageView
    android:id="@+id/btnStark"
    android:layout_marginLeft="4dp"
    android:layout_marginRight="2dp"
    android:layout_width="fill_parent"
    android:layout_height="100dp"
    android:layout_weight="1"
    android:src="@drawable/stark"
    android:scaleType="centerInside"
    android:gravity="center|bottom"
    android:layout_gravity="top" />

兰尼斯特总是偿还债务。

答案 1 :(得分:0)

您可以尝试使用ImageButton而不是简单的Button,并尝试使用不同的ScaleType模式来选择更适合您的内容。