位图大小在不同的Android设备中显示不同

时间:2014-05-21 04:14:31

标签: android android-layout

您好我试图在ImageView中设置图像,但在设置图像后,它在不同的Android设备上显示的大小不同。

Sony Z Experia 4.3

enter image description here

三星Y Dous 2.3它将整个图像覆盖到屏幕宽度

enter image description here

这是布局

<ImageView
    android:id="@+id/logo"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:padding="5dip"
    android:scaleType="fitStart" />

我怎样才能使它看起来像Sony Z Xperia一样。有什么想法吗?

提前致谢

4 个答案:

答案 0 :(得分:2)

在android中你有选择权 华电国际, MDPI, xdpi等。

文件夹,您必须根据设备分辨率创建不同的图像,并在确认设备分辨率和密度类别后将图像放在那里。

有关更多参考的原因,您可以看到here

这里我解释一些图表可能对你有所帮助。

Low density Small screens QVGA 240x320 (120dpi):

layout-small-ldpi (240x320)  
layout-small-land-ldpi (320x240)

Low density Normal screens WVGA400 240x400 (x432) (120dpi):

layout-ldpi  (240 x 400 )
layout-land-ldpi  (400 x 240 )

Medium density Normal screens HVGA 320x480 (160dpi):

layout-mdpi (320 x 480 )
layout-land-mdpi (480 x 320 )

Medium density Large screens HVGA 320x480 (160dpi):

layout-large-mdpi (320 x 480 )
layout-large-land-mdpi (480 x 320)

Galaxy Tab ( 240 dpi ):

layout-large  (600 x 1024) 
layout-large-land  (1024 x 600)

High density Normal screens WVGA800 480x800 (x854) (240 dpi):

layout-hdpi (480 x 800)
layout-land-hdpi (800 x 480)

Xoom (medium density large but 1280x800 res) (160 dpi):

layout-xlarge (800 x 1280)
layout-xlarge-land (1280 x 800)

答案 1 :(得分:1)

有两种方法可以解决这个问题。

  1. 如上所述,您需要考虑各种尺寸的图像 适用于具有不同显示密度的不同Android设备。 这里列出了几种密度: http://developer.android.com/guide/practices/screens_support.html
  2. 既然您拥有不同尺寸的图像,您可能还需要采取额外步骤并将其完美地扩展到特定尺寸 宽度和高度。尝试以下布局(请注意,dip是 与dp相同)

  3. <ImageView
        android:id="@+id/logo"
        android:layout_width="200dp"
        android:layout_height="75dp"
        android:padding="5dip"
        android:scaleType="fitStart" />
    

    当然,您可以使用单个图像(忽略#1)并使用#2将其拉伸到合适的大小,但之后您可能会将图像缩放10倍,并且看起来非常拉伸。

答案 2 :(得分:0)

您需要针对不同密度设备的不同图像。索尼Z具有更高的密度,这就是为什么它看起来更小。xxdpi,xdpi,hdpi, mdpi and ldpi文件夹用于此事。尝试使用this工具转换不同设备的图片。我知道这个工具仅用于图标。它生成不同密度的图标。但是你可以尝试一下。

答案 3 :(得分:0)

尝试使用此代码,并以屏幕百分比的形式提供高度和宽度

Display display = getWindowManager().getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();

display.getMetrics(metrics);

int widthScreen = metrics.widthPixels;
int heightScreen = metrics.heightPixels;

ImageView logo=findviewById(R.id.logo);

logo.getLayoutParams().height = (int) (heightScreen * 0.10);//it set the height of image 10% of your screen
logo.getLayoutParams().width = (int) (widthScreen * 0.10);