如何在android中的不同设备上保持相同的图像大小

时间:2016-04-26 10:03:19

标签: android android-imageview image-scaling

我使用imageView来显示活动图片。此图像大小不应根据设备屏幕而改变。但这不起作用。我想为每个设备使用图像的实际大小。以下是我的尝试。

<?xml version="1.0" encoding="utf-8"?>
<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" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/circle"
        android:id="@+id/imageView"
        android:scaleType="center"/>

</RelativeLayout>

如何在不在每个设备屏幕上缩放的情况下使用相同的图像大小? 有任何想法。

谢谢。

7 个答案:

答案 0 :(得分:0)

使用英寸而不是像素大小

例如android:layout_width=".5in"

<ImageView
        android:layout_width="1in"
        android:layout_height="1in"
        android:src="@drawable/circle"
        android:id="@+id/imageView"
        android:scaleType="center"/>

https://developer.android.com/guide/practices/screens_support.html

答案 1 :(得分:0)

您必须为每个屏幕尺寸设计布局,或者您应该在不同的角钱文件夹中声明您的尺寸而不是wrap_content,因为它会根据屏幕密度缩放图像,

您必须使用维度创建的值文件夹是:

values-hdpi/dimens.xml------for hd handsets
values-xhdpi/dimens.xml-----for 5" screens xHD
values-xxhdpi/dimens.xml----for nexus 5X
values-xxxhdpi/dimens.xml----for nexus 6 and 6P devices
values-sw720dp/dimens.xml-----for 9" tablets
values-sw800dp-hdpi/dimens.xml--------for 10" tablets
values-sw600dp/dimens.xml------for 7" tablets

答案 2 :(得分:0)

dp中使用修正宽度和高度。

DP是dp单位到屏幕像素的转换很简单:px = dp *(dpi / 160)。例如,在240 dpi屏幕上,1 dp等于1.5个物理像素。在定义应用程序的UI时,应始终使用dp单位,以确保在不同密度的屏幕上正确显示UI。

<ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@drawable/circle"
        android:id="@+id/imageView"
        android:scaleType="center"/>

有关DP,SP,px的详细信息。请检查this

答案 3 :(得分:0)

为此,您必须为ImageView定义静态固定高度和宽度,然后使用以下属性: -

imgview.setScaleType(ScaleType.FIT_XY);

答案 4 :(得分:0)

只需使用photoshop或gimp等软件检查jour图像的实际尺寸,然后以这种方式在imageview中设置实际宽度和高度(例如:50px x 40px):

   <ImageView
    android:layout_width="50px"
    android:layout_height="40px"
    android:src="@drawable/circle"
    android:id="@+id/imageView"
    android:scaleType="center"/>

答案 5 :(得分:0)

就这样做!!高度是固定的,所以你需要提供一个高度值,宽度必须是match_parent。它对我来说非常好。

<ImageView
    android:id="@+id/img_saving_image"
    android:layout_width="match_parent"
    android:layout_height="90dp"
    android:layout_centerHorizontal="true"
    android:src="@drawable/ic_cross"
    android:scaleType="fitCenter"
             or
    android:scaleType="fitXY"
    />

答案 6 :(得分:0)

将图片放入drawabledrawable-nodpi。 Android不会缩放您的图片大小。您的代码无需更改。