如何在固定的宽度和高度下完美地将图像缩放到imageview,而不会扭曲Android中的图像

时间:2015-10-22 14:26:49

标签: android image

我创建了一个应用程序来访问图库或相机中的图像。为此我有一个280 / 280dp尺寸的imageview。如何将图像从相机/图库(图像较大的图像)缩放到图像视图下方,完美地具有固定的宽度和高度,而不会扭曲Android中的图像:

<ImageView
    android:layout_width="280dp"
    android:layout_height="280dp"
    android:id="@+id/mainImage"
    android:background="@drawable/profile_settings_main_image"
    android:layout_marginTop="19dp"
    android:layout_below="@+id/container_toolbar"
    android:layout_centerHorizontal="true"
    android:focusable="false"
    android:adjustViewBounds="true"
    />

activity_main.xml(完整版面)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"

tools:context="in.ABC.activity.ProfileSettings"
android:background="#93BFB6">

<LinearLayout
    android:id="@+id/container_toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar" />



</LinearLayout>


<TextView android:layout_width="230dp"
    android:layout_height="50dp"
    android:textSize="22sp"
    android:background="@drawable/profile_settings_name"
    android:id="@+id/nameView"
    android:textColor="#000000"
    android:layout_marginTop="20dp"
    android:layout_below="@+id/mainImage"
    android:layout_alignLeft="@+id/mainImage"
    android:layout_alignStart="@+id/mainImage"
    android:layout_marginRight="1dp"
    android:gravity="center"/>

<ImageView
    android:layout_width="280dp"
    android:layout_height="280dp"
    android:id="@+id/mainImage"
    android:background="@drawable/profile_settings_main_image"
    android:layout_marginTop="19dp"
    android:layout_below="@+id/container_toolbar"
    android:layout_centerHorizontal="true"
    android:focusable="false"
    android:adjustViewBounds="true"
    />

<ImageButton
    android:layout_width="50dp"
    android:layout_height="100dp"
    android:id="@+id/editName"
    android:background="@drawable/profile_settings_image"
    android:layout_alignTop="@+id/nameView"
    android:layout_toRightOf="@+id/nameView"
    android:layout_toEndOf="@+id/nameView"
    android:layout_alignBottom="@+id/nameView" />

    <ImageButton
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:id="@+id/editImage"
    android:background="@drawable/profile_settings_image_2"
    android:layout_alignBottom="@+id/mainImage"
    android:layout_alignRight="@+id/mainImage"
    android:layout_alignEnd="@+id/mainImage"
    android:focusable="true" />

</RelativeLayout>

2 个答案:

答案 0 :(得分:0)

如果图像的比例因子与ImageView的比例因子不匹配,则在不牺牲清晰度的情况下无法匹配高度/宽度。您必须妥协,并决定是否要切断某些图像,或者让整个图像适合内部,但要确认会留下一些空间。

有关android:scaleType http://www.techrepublic.com/article/clear-up-ambiguity-about-android-image-view-scale-types-with-this-guide/

的详情,请参阅此处

答案 1 :(得分:0)

您可以尝试使用Android ImageView.ScaleType:

<ImageView
    android:layout_width="280dp"
    android:layout_height="280dp"
    android:id="@+id/mainImage"
    android:background="@drawable/profile_settings_main_image"
    android:layout_marginTop="19dp"
    android:layout_below="@+id/container_toolbar"
    android:layout_centerHorizontal="true"
    android:focusable="false"
    android:adjustViewBounds="true"

    android:scaleType="fitXY"
    />

代码结果:

Result of the code

原始图片:

Original Picture